下面的代码使我StringIndexOfBoundException
if (custom.getUser().equals("0") || custom.getUser().equals("")) {
vital.add(new Pair<String, String>("User", "-"));
} else {
vital.add(new Pair<String, String>("User", custom.user() + "F" + "\n" + custom.getName().subString(0,1));
}
显示字符串的第一个字符。下面的代码工作正常,但是我不确定它是否正确。
String name = "";
if (custom.getUser().equals("0") || custom.getUser().equals("")) {
vital.add(new Pair<String, String>("User", "-"));
} else if (!custom.getName().equals("")) {
name = custom.getName().substring(0, 1);
} else {
vital.add(new Pair<String, String>("User", custom.user() + "F" + "\n" + name));
}
最佳答案
首先,您从哪里得到例外?
仅当custom.getName().subString(0,1)
为空时,StringIndexOfBoundException
才会引发custom.getName()
。但是,如果为空,则代码将不会进入else
分支,因此无法获取异常。
其次,第二种方法不等于第一种:如果custom.getName()
既不为空,也不为"0"
添加任何内容。
我觉得这是一个改进:
if (custom.getUser().equals("0") || custom.getUser().isEmpty()) {
vital.add(new Pair < String, String > ("User", "-"));
} else {
// limit scope of variable to else-branch
String name = "";
// check empty string with isEmpty
if (!custom.getName().isEmpty()) {
name = custom.getName().substring(0, 1);
}
// add a new Pair in any case
vital.add(new Pair < String, String >
("User", custom.user() + "F" + "\n" + name));
}