反转整数值

时间:2011-08-30 00:15:07

标签: java integer reverse

我无法弄清楚这一点。这是作业。我需要创建一个方法来反转传递给它的整数。由于每个人的输入,我现在能够在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;

}

3 个答案:

答案 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 01的值,并且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个异常。