新梓生 2024-11-02 12:35 采纳率: 100%
浏览 0
已结题

为什么控制台打出大于1000的水仙花数

我明明在代码中限定了n的范围是三位数啊怎么还打出了其他水仙花数?

img

  • 写回答

1条回答 默认 最新

  • 香格里辣 2024-11-02 12:36
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的代码和描述来看,问题出现在循环的条件语句中。你的循环条件是 for(int n=0;n>=100|n<=999;n++),这里的逻辑运算符 | 是“或”的意思,因此这个循环实际上是从 0 开始一直运行到正无穷,只要 n 大于等于 100 或者 n 小于等于 999,这个循环就会继续执行。这就是为什么你得到的输出中包含大于 1000 的数,例如 1001、1000 等。

    为了解决这个问题,你应该使用“与”运算符 && 来确保 n 的值在 100 到 999 之间。修正后的循环条件如下:

    for(int n = 100; n <= 999; n++) {
        // ... 你的代码逻辑
    }
    

    另外,你还需要修正判断是否为水仙花数的条件语句。在 Java 中,应该使用 == 进行值比较,而不是 = 进行赋值。所以,将 if(n=h*h*h+t*t*t+u*u*u) 修改为 if(n == h*h*h + t*t*t + u*u*u)。同时,你的代码中的分号使用也不规范,需要修正。下面是修正后的代码片段:

    public static void main(String[] args) {
        for(int n = 100; n <= 999; n++) {
            int h = n / 100;
            int t = n % 100 / 10; // 这里计算十位数字应该使用整数除法,即 (n%100)/10
            int u = n % 10;
            if(n == h * h * h + t * t * t + u * u * u) {
                System.out.println(n + "是水仙花数");
            }
        }
    }
    

    希望这些修改能帮助你解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月2日