-1

我正在从文件中读取数据,一次一行。行中的元素数量可以变化。我正在使用 Java 8。

public boolean display (Integer code, String line) {

    String[] strArray = line.split(Constant.sep);

    String name     = strArray[0];
    String address  = strArray[1];
    String country  = strArray[2];

    //Do Something Scenario (if only name is Not Null, OR if name & address are not null or ....
}

在上述情况下,并非所有字段都是后续执行所必需的。

但是,在上述情况下,strArray 超出范围,例如,当仅存在“名称”字段时。我明白了,为什么会这样。有没有办法解决这个问题?

我宁愿简化代码,不必为每种情况创建单独的代码或为每种组合构建复杂的 If/else 逻辑。值“code”是一个帮助器,它告诉方法“字符串行”中存在哪些字段。

4

2 回答 2

0

使用 if 语句。

String name = “default”;
String address = “default”;
String country = “default”;
int length = strArray.length;
if(length > 1)
    name = strArray[0];
if(length > 2)
    address = strArray[1];
if(length > 3)
    country = strArray[2];

这是有效的,因为代码“贯穿”到每个 if 语句。如果长度为 2,则不执行第三个 if 语句,但执行前两个。这使您可以避免重复自己并使用长的 if 语句结构。

于 2017-12-17T00:36:44.490 回答
-1

只要您使用的是 java8,我想这会很有用,这是一个简单的尝试Optional

public boolean display(Integer code, String line) {

    String[] strArray = line.split(Constant.sep);
    String[] strArrayTemp = new String[3];
    System.arraycopy(strArray, 0, strArrayTemp, 0, strArray.length);

    String name = "";// or anything that represents your default value
    String address = "";
    String country = "";

    if (Optional.ofNullable(strArrayTemp[0]).isPresent())
        name = strArrayTemp[0];

    if (Optional.ofNullable(strArrayTemp[1]).isPresent())
        address = strArrayTemp[1];

    if (Optional.ofNullable(strArrayTemp[2]).isPresent())
        country = strArrayTemp[2];

    //complete your logic ...

    return true; // I guess
}
于 2017-12-16T22:55:19.737 回答