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

以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
从你给出的代码和描述来看,问题出现在循环的条件语句中。你的循环条件是 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 + "是水仙花数");
}
}
}
希望这些修改能帮助你解决问题!