我知道这个问题已经被问过很多次了,但是我还没有看到使用这种方法的任何问题。在对此发表任何评论之前,是的,是的,但是我不是在寻找完整的答案,而是在朝着正确的方向发展。基本上,我的这段代码的问题是它只输出数字“ 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(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语句一起使用,以防止此类错误。

09-11 17:51