我知道这个问题之前已经被问过很多次了,但我还没有看到有人使用这种方法。在对此有任何评论之前,是的,确实如此,但我并不是在寻找完整的答案,我只是在寻找正确方向的插入力。基本上,我对这段代码的问题是它只输出数字“0”。我想知道我哪里出错了。
public class Perfect {
public static void main(String[] args) {
final int LIMIT = 1_000;
int i;
int x;
int works = 0;
for(i = 1; i <= LIMIT; i++)
if(works == i - 1) {
System.out.print(works + " ");
}
for(x = 2; x <= i; x++)
if(i % x == 0) {
works = works + x;
}
else
works = works;
}
}
最佳答案
您做错的一件事是您没有为 for 循环使用 {}
。
您缩进的方式并不是它的执行方式。
其执行方式如下。
for(i = 1; i <= LIMIT; i++) {
if(works == i - 1) {
System.out.print(works + " ");
}
}
for(x = 2; x <= i; x++) {
if(i % x == 0) {
works = works + x;
}
else {
works = works;
}
}
最好始终将 {}
与循环和 if 语句一起使用,以防止出现此类错误。
关于java - 仅使用 Java 中的循环和 if 语句查找 1-1000 之间的完美数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882467/