我收到一条错误消息,指出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;
}
答案 0 :(得分:2)
是的,x
未初始化。
int x=0; // just initialize it
答案 1 :(得分:2)
int x = 0;
Instance fields
始终内化到default value
,即int
将为0
,object
为null
等,其中作为本地变量必须初始化。
答案 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,除了它会去首先得到一个例外。