【问题标题】:Reverse Number in JavaJava中的倒数
【发布时间】:2018-03-10 03:49:10
【问题描述】:
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 为什么?

【问题讨论】:

  • 您是否使用调试器逐行逐行查看代码和论文中的结果有何不同?这就是您解决此类问题的方式。
  • -429的反面是186?

标签: java arrays


【解决方案1】:

它循环了 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多