java - 仅使用 Java 中的循环和 if 语句查找 1-1000 之间的完美数字

标签 java loops perfect-numbers

我知道这个问题之前已经被问过很多次了,但我还没有看到有人使用这种方法。在对此有任何评论之前,是的,确实如此,但我并不是在寻找完整的答案,我只是在寻找正确方向的插入力。基本上,我对这段代码的问题是它只输出数字“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/

相关文章:

c++ - 嵌套循环和素数

c++ - 如何在 C++ 中找到特定区间内的所有完美数?

c - C语言中如何返回两个完全数的和

java - 是否可以使用按键监听器显示以前隐藏的 JFrame

php - 循环数据库中的特定记录并显示结果 - PHP

java | boolean 值不重新评估/更新

javascript - 尝试使用 getElementById 在 Javascript 中打印正确答案

java 套接字问题

java - 如何强制在 @Entity 和 @ElementCollection 之间生成外键?

C#:如何直接在 java.exe 中执行此命令行?