【问题标题】:Java Sum of digits with the first digit being 0Java首位为0的数字总和
【发布时间】:2023-02-14 00:28:27
【问题描述】:

我无法找到案例 0310 的数字总和,我的方法返回 2 而不是 4。另一个案例 0300 返回 12 而不是 3。

public static int sumOfDigits(int num){
        int sum = 0;
        int val = Math.abs(num);
        if (val == 0){
            return 0;
        }
        while(val != 0){
            sum += val % 10;
            val /= 10;
        }
        return sum;
    }
    public static void main(String[] Args){
        System.out.println(sumOfDigits(0310));
        System.out.println(sumOfDigits(0300));
    }

当我自己输出0310时,它返回200,我不明白如何让它识别为0310。

【问题讨论】:

标签: java


【解决方案1】:

在 Java 中,有一个前导零意味着这是一个八进制文字。 310 八进制是 200 十进制(数字总和为 2,正如您的代码生成的那样)。 300 八进制是 192(数字总和为 12,同样是您的代码生成的)。

简而言之 - 你的代码很好,你只是使用八进制文字而不是十进制文字。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多