Java 阿姆斯特朗计划将持续到1000年,但不会超过1000年。怎样才能升得更高?

Java 阿姆斯特朗计划将持续到1000年,但不会超过1000年。怎样才能升得更高?,java,Java,我用java编写了Armstrong程序。因此,程序应检查某个区间之间的数字是否由某人给出(例如:请输入一个较低的数字:100;请输入一个较高的类:1700;程序应给出该区间内的所有数字,即阿姆斯特朗) 问题是,该程序只检查阿姆斯特朗数是否为1000,而不是更高 有一行让我好奇,那就是:sum=sum+(r*r*r) 因此,如果我将其更改为(r*r*r*r),它只显示超过1000而不低于1000的阿姆斯特朗数字。 你知道它有什么问题,如何改变它吗 代码如下: static boolean isA

我用java编写了Armstrong程序。因此,程序应检查某个区间之间的数字是否由某人给出(例如:请输入一个较低的数字: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)因此您的代码会找到153370371和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;
inttmp=1;
对于(int i=0;i
向我们展示代码,这样我们就可以看到哪里出了问题。!!是什么阻止你走得更高?错误?你使用的是一个抛出堆栈溢出的递归函数吗?如果你不提供代码来查看你可能出了什么问题,你希望有人怎么回答。但这就是问题所在。我需要一段时间内的所有数字。例如:我有从100到1700的数字,程序应该输出从100到1700的所有阿姆斯特朗数字,但在它要去的地方,程序只输出阿姆斯特朗数字直到1000(rrr)或所有高于1000(rrr*r)的阿姆斯特朗数字。我希望他们在一起,而不是分开。这样它就什么也做不了。我只能输出较低的数字和较高的数字,那么程序不会输出任何东西。它只是blank thenoopsi,
inttmp=1而不是
inttmp=r我的错,我更新了答案。这解决了你的问题吗?如果是这样的话:是的,确实有帮助。再次感谢^^