class love
{
public static void main(String args[])
{int i,j,sum=0;
for(i=1;i<=10;i++)
{
for(j=1;j<i;j++){
if(i%j==0)
sum=sum+j;
}
if(sum==i)
System.out.println(i);}}}
这是一个求10以内完数的代码,我都可以编译通过,但就是得不到结果(当java love的时候,没有一点反应 )

解决方案 »

  1.   

    算另外一个数了,要将sum清零
    class love {
    public static void main(String args[]) {
    int i, j, sum = 0; for (i = 1; i <= 10; i++) { for (j = 1; j < i; j++) { if (i % j == 0)
    sum = sum + j;
    }
    if (sum == i)
    System.out.println(i);
    sum = 0; } }
    }
      

  2.   

    逻辑有问题。public static void main(String[] args) {
    int i, j, sum = 0;
    for (i = 1; i <= 10; i++) {
    sum = 0; //这里必须把sum重置。具体为什么,自己去思考吧
    for (j = 1; j < i; j++) {
    if (i % j == 0)
    sum += j;
    }
    if (sum == i)
    System.out.println(i);
    }
    }
      

  3.   

    如果你把代码改成:class love {
    public static void main(String args[]) {
    int i, j, sum = 0;
    for (i = 1; i <= 10; i++) {
    sum = 0;
    for (j = 1; j < i; j++) {
    if (i % j == 0)
    sum = sum + j;
    }
    // if (sum == i)
    System.out.println(i + " " + sum);
    }
    }
    }你可以看看输出为1 0
    2 1
    3 1
    4 3
    5 1
    6 6
    7 1
    8 7
    9 4
    10 8说明你这样写sum永远不等于i,当然输出不了。所以你要在每次进循环的时候把sum的值归零,如楼上那样.
      

  4.   

    晕,我前面已经加上sum= 0了,你把前面的sum=0删了看吧