【发布时间】:2009-06-24 03:36:30
【问题描述】:
我正在尝试构造返回布尔值的方法:
public boolean isStringValid(String s){
boolean isValid;
String temp = null;
// only combinations of 'A','B','C' are allowed
for (int i = 0; i < s.length(); i++)
{
temp = s.substring(i, i+1);
if (temp.equals("A")|temp.equals("B")|temp.equals("C")){
isValid= true;
}else{
isValid= false;
}
}
return isValid;
}
但我收到一个编译器错误,提示“局部变量 isValid 可能尚未初始化”。
我要做的是获取一个字符串并检查它的每个字母,如果在字符串中找到除 A、B 或 C 之外的任何字母,isStringValid 方法应该返回 false。只有在检查每个字母并发现是A,B或C之后,该方法才能返回true。
我想我无法确定局部变量的范围。该方法从 if/else 块中返回的适当方式是什么?如果这不可能,你会推荐什么是最好的设计方法?
感谢您提前 最诚挚的问候
【问题讨论】:
-
IMO-s 是一个糟糕的变量名,如果它在原始代码中,请更改
-
作为建议,当对常量使用 equals 时,请尝试在常量对象上调用它:例如:"A".equals(temp);这样,如果 temp 为 null,您将不会得到 NullPointerException,而 equals 将产生 false。
-
@Tom:由于temp变量来自substring方法,这里不能为null。在其他情况下,是的,这样做很有用。