java - 阿姆斯特朗计划一直持续到 1000,但不会更高。怎样做才能走得更高?

标签 java

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

相关文章:

java - Gwt 检查对象是否具有焦点

java - 将 Jar 文件与 -classpath JAVA 组合

Java:从int到short,从float到short

java - 我的 swing 对话框在 Mac 和 Windows 上以不同的方式显示长字符串

javascript - 在 Spring MVC 中的 AJAX 响应中发送文件

java - JComboBox 选择的索引更改用于使用按钮单击事件将不同的 JTextField 值发送到 JTable

java - 在 java 流中使用 .peek() 被认为仅用于调试目的,日志记录是否被视为调试?

java - 我已经通过 Java spring security 生成了公钥,并且尝试使用该公钥通过 Nodejs Crypto 来加密数据,但它返回错误

java - Alter Session 在 MyBatis 中设置日期格式

java - 如何修改纹理中像素的颜色?