gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:37 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com