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

Java Int(Why returning 0 when number is within range)

感谢您的宝贵时间!

  1. 对于高达 2147483641 的值,代码在 returning 0(为什么)之后工作正常。 根据我的理解,程序应该 return 仅在发生溢出时才为 0。(对于 -2147483648 和 2147483647 )而不是在范围内的值。

  2. 也请分享任何 link 前导零数字反转。我在网上找不到任何。

     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)。