我用java编写了阿姆斯特朗程序。因此,程序将检查某个区间之间的数字是否由某人给出。(例如:请给出一个较低的数字:100;请给出一个较高的类别:1700;并且程序应该给出所有数字,即阿姆斯特朗在这个间隔。)
问题是,该程序仅检查阿姆斯特朗数字是否达到 1000,而不是更高。
有一行让我很好奇,那就是:sum = sum + (r*r*r);
因此,如果我将其更改为 (r*r*r*r)
,它只会显示超过 1000 且不低于 1000 的阿姆斯特朗数字。
有什么想法有什么问题以及如何改变它吗?
代码如下:
static boolean isArmstrong(int number) {
boolean isArmNumber = false;
int sum = 0;
int tempNum = number;
while (tempNum > 0) {
int r = tempNum % 10;
sum = sum + (r*r*r);
tempNum = tempNum / 10;
}
if (sum == number) {
isArmNumber = true;
}
return isArmNumber;
}
最佳答案
您正在使用 sum = sum + (r*r*r);
,因此您的代码会发现 153、370、371 和 407 作为有效的阿姆斯特朗数字。
如果您想检查更高的数字,则必须根据输入数字的长度将计算更改为 (r*r*r*r)
等。
将 sum = sum + (r*r*r);
替换为:
int tmp = 1;
for (int i = 0; i < String.valueOf(number).length(); i++) {
tmp = tmp * r;
}
sum = sum + tmp;
关于java - 阿姆斯特朗计划一直持续到 1000,但不会更高。怎样做才能走得更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47370753/