范围局部变量和条件的问题

den*_*chr 1 java variables core local

我正在尝试构造一个返回布尔值的方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到编译器错误,说"本地变量isValid可能尚未初始化".

我想要做的是取一个字符串并检查它的每个字母,如果在字符串中找到除A,B或C以外的任何字母,则isStringValid方法应该返回false.只有在检查完每个字母并找到A,B或C后,该方法才能返回true.

我想我无法搞清楚局部变量的范围.该方法从if/else块返回的适当方法是什么?如果那是不可能的,你会建议最好的设计方法是什么?

谢谢你们最诚挚的问候

vic*_*ugo 10

如果你得到一个空字符串作为参数会发生什么?

编译器需要确保你总是返回一些东西.用false初始化你的isValid变量,这样如果方法获得一个空字符串,它只会返回默认值.

boolean isValid = false;
Run Code Online (Sandbox Code Playgroud)

在Java中,您无法返回可能未初始化的变量,只需在所有可能的流中确保变量设置为任何值.

更新:这将解决您的问题,但我建议您查看下面的答案,因为您的方法的逻辑不正确