Java 反向整数的句柄溢出

Java 反向整数的句柄溢出,java,integer,reverse,Java,Integer,Reverse,它实际上与这个问题有些关联,将整数的数字反转,当反转的整数溢出时返回0 所以应该是: 输入:-123,返回:-321 输入:1500032455,返回:0 我可以反转正常情况下的数字,但不能反转溢出情况下的数字,我检查了上面的链接,我的有点笨重..但我想它应该工作相同?有人能给我建议吗 public int reverse(int x) { boolean isPositive = true; if (x < 0){ isP

它实际上与这个问题有些关联,将整数的数字反转,当反转的整数溢出时返回0

所以应该是:

输入:-123,返回:-321

输入:1500032455,返回:0

我可以反转正常情况下的数字,但不能反转溢出情况下的数字,我检查了上面的链接,我的有点笨重..但我想它应该工作相同?有人能给我建议吗

    public int reverse(int x) {

        boolean isPositive = true;
        if (x < 0){
            isPositive = false;
            x = x * -1;
        }

        int length = String.valueOf(x).length();
        int[] digit = new int[length];

        for (int i = 0; i < length; i++){
            digit[i] = x % 10;
            x = x / 10;
        }

        int solution = 0;
        for (int j = 0; j < length; j++){
            solution = solution + digit[length-j-1] * (int) Math.pow(10,j);
        }

        if (solution > Integer.MAX_VALUE){
            return 0;
        }

        return (isPositive == false) ? -solution : solution;        
    }

}
public int reverse(int x){
布尔值isPositive=true;
if(x<0){
isPositive=假;
x=x*-1;
}
int length=String.valueOf(x).length();
int[]位=新的int[长度];
for(int i=0;i整数最大值){
返回0;
}
返回(isPositive==false)?-解决方案:解决方案;
}
}

我认为有一种更简单的方法。尝试:

int reverse(int num)
{
    char[] number = String.valueOf(num > 0 ? num : -num).toCharArray();
    for(int i=0; i< number.length/2;i++)
    {
        char temp = number[i];
        number[i] = number[n-i];
        number[n-i] = temp;
    }
    BigInteger Num = new BigInteger(new String(number));
    if(Num.compair(BigInteger.valueOf(Integer.MAX_INTEGER)) >= 0) return 0; // Or throw an Exception.
    else return Integer.praseInt(new String(number)) * (num >0 ? 1 : -1);
}
int反转(int num)
{
char[]number=String.valueOf(num>0?num:-num).tocharray();
对于(int i=0;i=0)返回0;//或引发异常。
else返回整数.praseInt(新字符串(数字))*(num>0?1:-1);
}

通过替换函数的返回类型并更改最后一个if语句,您可以使用它来反转大于Integr.MAX\u INTIGER的数字。

解决方案是一个int。根据MAX\u INTEGER的定义,int不能大于MAX\u INTEGER,否则它就不是整数的最大值,对吗?如果您想要一个大于MAX_INTEGER的数字,则需要另一种类型,而不是
int
。Java中没有那么多,所以我会让你弄明白。有时int超过最大值时似乎会倒带(变为负数),甚至会产生随机数,所以我们不能相信它会变成MAX\u整数。谢谢!!我早就应该创造解决方案了!“long”解决了大多数情况,但是,在测试-2147483648时,它不起作用……我发现在第一部分之后(检查它是否为正数,如果不是,则将x转换为正数……),x的值在此之后仍然为负数……我不确定BigIntegr.valueOf()是否为负数以int或float作为参数,无论哪种方式都有效。(如果是float,只需将int转换为float)。如果你需要更多的解释,我很乐意帮助你。