Java Int(为什么数字在范围内返回0)



感谢您的宝贵时间!

  1. 的值高达2147483641代码工作正常,之后它返回0(为什么)..根据我的理解,只有当溢出发生时,程序才应该返回0。(对于-2147483648和2147483647)不用于值落在范围内。

  2. 也请分享任何前导零反转的链接。我在网上找不到。

    public class ReverseDigit {
    public int reverse(int integer) {
    boolean negflag=false;
    if(integer<0){
    negflag=true;
    integer=integer*-1;
    }
    int rev=0;
    int rem=0;
    while(integer!=0){
    rem=integer%10;
    int newrev= rev*10+rem;
    if((newrev-rem)/10!=rev){
    return 0;
    }
    else{
    rev=newrev;
    }
    integer=integer/10;
    }
    return  rev = negflag?rev*-1:rev;
    }
    public static void main(String[] args) {
    ReverseDigit rd = new ReverseDigit();
    System.out.println(rd.reverse(**2147483642**));
    
    }
    

    }

这是因为2147483642的反向数是2463847412,而这个数大于Intrgre.MAX_VALUE(2147483647),所以这个数小于0。这也发生在2147483623身上,因为他的反向数是3263847412,而这个数比Intrgre.MAX_VALUE大。为了解决这个问题,我看到了两个可能的解决方案:

  1. 使用long代替int
  2. 重写方法与String工作,因为你没有真正做任何计算(你可以使用string.charAt(int index)得到数字1到1)。

相关内容

  • 没有找到相关文章

最新更新