java - Java 中的阿姆斯特朗数字代码无法正常工作

标签 java

我对 Java 完全陌生,正在编写代码来检查数字是否是 0 到 999 范围内的阿姆斯特朗数字。

请告诉我出了什么问题。在命令提示符下运行时,它会重复打印:

1 is the count

代码:

import java.util.*;
class Armstrong
{
    public static void main (String[] args)
    {
        int sum = 0;

        for (int i = 0; i < 1000; i++)
        {
            int n = i;
            int count =0;

            while(n > 0)
            {
                int mod = n % 10;
                n = n / 10;
                count++;
            }
            System.out.println(+count+ "is the count");

            for (int j = 1; j < count; j++)
            {   
                int val = i % 10;
                i= i / 10;
                sum = val * val * val + sum;
            }
            if (sum == i)
            {
                System.out.println( +i+ "is an Armstrong number");
            }       
        }   
    }
}

最佳答案

An Armstrong number is a number that is the sum of its own digits each raised to the power of the number of digits.

对于初学者,您始终将数字提高到 3 次方,因此您的计算只能适用于 100999 之间的 i

其次,您正在内部循环中更改 i,因此最后的比较 if (sum==i) 将失败,因为 sum 应该与原始 i 进行比较。

接下来,您不会在 i 的每次迭代中将 sum 重置为 0

您还可以跳过其中一位数字。

这似乎有效:

    int sum = 0;

    for (int i = 100; i < 1000; i++) { // start at 100
        sum = 0; // clear the sum in each iteration
        int n = i;
        int count = 0;

        while (n > 0) {
            int mod = n % 10;
            n = n / 10;
            count++;
        }
        n = i;
        for (int j = 0; j < count; j++) { // iterate over all the digits

            int val = n % 10;
            n = n / 10; // don't change i
            sum = val * val * val + sum;

        }
        if (sum == i) {
            System.out.println(i + " is an Armstrong number");
        }
    }

这将返回:

153 is an Armstrong number
370 is an Armstrong number
371 is an Armstrong number
407 is an Armstrong number

关于java - Java 中的阿姆斯特朗数字代码无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573866/

相关文章:

java - 运行第一个HIPI程序时,出现JSON错误。我应该在哪里添加它以及如何添加?

java - 难以使用 Ant 构建 Pig

java - 在共享库中为 JPA 实体(域类型对象)创建基类的缺点

java - 使用spark-submit部署程序时出现java.lang.NoSuchMethodError

Java 的 L 号(长)规范

Java8 : collecting a stream into a SortedMap by key

java - Javax.jws 和 javax.xml.ws 有什么区别

java - 无法在 WiFi 网络中使用 jpcap 接收数据包

java - ArrayList<String> 到 toString()

java - hibernate 设置