我无法弄清楚这一点。这是作业。我需要创建一个方法来反转传递给它的整数。由于每个人的输入,我现在能够在for
循环中修复outofBounds错误。传递给方法的整数可以是任意长度。我必须返回一个整数而不是数组或字符串。但现在我得到一个'未解决的编译问题:令牌上的语法错误“[”,int u = backInt[];
行上的此令牌之后的表达式。但是我不知道在[]中放什么。我一直无法找到将Integer数组转换为整数的方法,所以我可以将整数传回,所以我迷路了。这是我到目前为止的代码:
public static int reverseIt(int x){
int y = String.valueOf(x).length();
int[] backInt = new int [y];
for(int z = 0; z < y; z++){
x %=10;
backInt[z] = x;
x /= 10;
}
int u = backInt[];
return u;
return -1;
}
答案 0 :(得分:2)
您从z=0
开始,以z=y
结尾。这是循环中的y+1
次,但是你的数组只有y
个元素长,所以当你尝试写入不存在的元素时,循环的最后一次迭代会发生异常。但到那时,x
应该已经为零,因为您已经处理了所有y
个数字,因此您的停止条件应该是z<y
而不是z<=y
。
答案 1 :(得分:1)
你的循环太过分了。它应该是:
for(int z = 0; z < y; z++) {
...来代替。
以输入12
为例。这是两个字符长,因此backInt
的长度为2.当您完成循环时,您将迭代z
0
,1
的值,并且2
。当backInt[2]
只包含两个元素时,backInt
的价值是多少?
编辑:您的代码也将中断,例如2147483646,因为您的结果整数对于Integer类型来说太大了。但这不是重点。
答案 2 :(得分:1)
Java数组是0索引的。这意味着如果你做int[] arr = new int[10]
,你创建一个可以容纳10 ints
的整数数组,第一个int存储在arr[0]
中,第二个存储在arr[1]
中,arr[10-1]
中的最后一个,arr[9]
。
要修复代码,请将z <= y
更改为z < y
。将来,请记住,如果为n
个对象创建数组,则可以arr[0], arr[1]... arr[n-1]
访问它们,但访问arr[n]
会抛出OutOfBounds
个异常。