我正在读取文件中的数据,一次一行。该行中元素的数量可以变化。我使用的是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”是一个帮助器,它告诉方法“String line”中存在哪些字段。
答案 0 :(得分: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语句,但前两个是。这允许您避免重复自己并使用long if语句结构。
答案 1 :(得分:-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
}