返回语句和循环

时间:2015-03-04 06:40:46

标签: java loops return

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

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;
}

5 个答案:

答案 0 :(得分:2)

是的,x未初始化。

int x=0; // just initialize it

答案 1 :(得分:2)

int x = 0;

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

答案 2 :(得分:1)

您需要初始化x。

int x = 0;

答案 3 :(得分:1)

只需更改:

 int x;

int x = 0;

如果你的循环永远不会被执行,那么x也被初始化

答案 4 :(得分:1)

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

并不重要,因为无论如何,您的代码永远不会到达return x;。它总会抛出异常。你告诉它以低于字符串长度的1开始i,在每次迭代循环后将i减少1,并且只要i小于字符串的长度,这意味着它将下降到3,2,1,0,-1,......并且会一直向下到-2147483648,除了它会去首先得到一个例外。