如何在不使用 Java Math 类的情况下确定一个数字是否是 Armstrong?

问题描述 投票:0回答:1

我正在编写一个方法来确定一个数字是否是阿姆斯特朗的新兵训练营作业,并且不允许我使用数学课程。为什么这不起作用?

public static boolean isArmstrong(int n) {
    String strNum = "" + n;
    int pow = strNum.length();
    int sum = 1;

    for (int i = 0; i < strNum.length(); i++) {
        int eachDigit = Integer.parseInt(strNum.substring(i, i + 1));
        for (int j = 0; j < pow; j++) {
            sum *= eachDigit;
        }
    }

    System.out.println(sum);
    return sum == n;
}

public static void main(String[] args) {
    System.out.println(isArmstrong(153));
}

打印:

3375
false
java math nested
1个回答
0
投票

我需要再添加一个 var tempSum 来保存单独的数字,然后我可以将它们加在一起。

public static boolean isArmstrong(int n){

        String strNum = "" + n;
        int pow = strNum.length();
        int sum = 0;
        int tempSum = 1;

       for(int i = 0; i < strNum.length(); i++){
            int eachDigit = Integer.parseInt(strNum.substring(i , i + 1));
            tempSum = 1;
           for (int j = 0; j < pow; j++) {
               tempSum *= eachDigit;
           }

           sum += tempSum;
        }

        System.out.println(sum);
        return sum == n;
    }
© www.soinside.com 2019 - 2024. All rights reserved.