Java中的反向数字

时间:2018-03-10 03:49:11

标签: java arrays

class Solution {
    public int reverse(int x) {
        int ans = 0;
        while (x != 0) {
            int val = x % 10;
            int tmp = ans;
            ans = ans * 10 + val;
            if ((ans - val) / 10 != tmp) {
                return 0;
            }
            x /= 10;
        }
        return ans;
    }
}

我开始使用此代码来解决反向数字问题。如果我在纸上做,并以负数作为输入,我会得到不同的结果。我相信它与java处理Mod的方式有关。如果有人能解释这个案子,请。

-429在纸上给我186在计算机上-924为什么?

1 个答案:

答案 0 :(得分:0)

循环3次:

第一个循环:

 int ans = 0;
 while (x != 0) {                     //x = -429
     int val = x % 10;                //val = -9
     int tmp = ans;                   //tmp = 0
     ans = ans * 10 + val;            //ans = -9
     if ((ans - val) / 10 != tmp) {   //false
         return 0;
     }
     x /= 10;                         //x=-42
 }

第二个循环:

 int ans = 0;
 while (x != 0) {                     //x = -42
     int val = x % 10;                //val = -2
     int tmp = ans;                   //tmp = -9
     ans = ans * 10 + val;            //ans = -92
     if ((ans - val) / 10 != tmp) {   //false
         return 0;
     }
     x /= 10;                         //x = -4
 }

第三循环:

 int ans = 0;
 while (x != 0) {                     //x = -4
     int val = x % 10;                //val = -4
     int tmp = ans;                   //tmp = -92
     ans = ans * 10 + val;            //ans = -924
     if ((ans - val) / 10 != tmp) {   //false
         return 0;
     }
     x /= 10;                         //x = 0
 }

return -924