Return 语句和循环

Return Statement and Loop

我收到一条错误消息,指出 x 尚未初始化。如何让 x 变为 return?

public static int sumOfOddPlace(String number){
   int x;
   for (int i = number.length()-1; i <= number.length(); i-=1){
        char c = number.charAt(i);
        x = Character.getNumericValue(c);
        x += x;
    }
    return x;
}

是的,x没有初始化。

int x=0; // just initialize it

你需要初始化x。

int x = 0;

只需更改:

 int x;

int x = 0;

因此如果您的循环从未执行过,x 也会被初始化

int x = 0;

Instance fields 总是内化为 default value,即 int 将是 0objectnull 等,其中作为本地您必须初始化的变量。

编译器会报错,因为据它所知,您可以在 x 初始化之前到达 return x;。这是因为它不知道循环体是否会被执行。你和我都知道循环体将始终至少执行一次(因为 number.length() 不可能是 -2147483648),但编译器不会尝试进行任何类似的计算。据它所知,程序可以在设置 x 之前跳过整个循环。因此,您需要按照其他答案中的说明初始化 x

这无关紧要,因为您的代码无论如何都不会达到 return x;。它总是会抛出异常。你已经告诉它从 i 开始比字符串长度小 1,在每次循环迭代后将 i 减 1,并且只要 i 小于字符串的长度,这意味着它会下降到 3, 2, 1, 0, -1, ... 并且会一直下降到 -2147483648 除了它会先得到一个异常。