编写应用程序,求1000之内的所有完数。public class wanshu
{ public static void main(String args[])
{ int sum=0,i,j;
for(j=1;j<=1000;j++)
{ for(i=1,sum=0;i<=j/2;i++) // 这里为什么还要声明下sum?
{ if(j%i==0)
{ sum=sum+i;
}
}
if(sum==j)
{ System.out.println(""+j+"是完数");
}
}
}
}这个是正确,能解释运行的代码。
可是我编写的时候,在代码第五行,没有定义sum=0,结果可以解释,却不能运行。 纳闷为什么要在后面加上sum=0。
{ public static void main(String args[])
{ int sum=0,i,j;
for(j=1;j<=1000;j++)
{ for(i=1,sum=0;i<=j/2;i++) // 这里为什么还要声明下sum?
{ if(j%i==0)
{ sum=sum+i;
}
}
if(sum==j)
{ System.out.println(""+j+"是完数");
}
}
}
}这个是正确,能解释运行的代码。
可是我编写的时候,在代码第五行,没有定义sum=0,结果可以解释,却不能运行。 纳闷为什么要在后面加上sum=0。
自己好好看看,很简单
for(j=1;j<=1000;j++)
{ for(i=1,sum=0;i<=j/2;i++) // 这里为什么还要声明下sum?
{ if(j%i==0)
{ sum=sum+i;
}
因为外层还有一个for循环,这样的话外面的for每次循环的时候把sum初始化为0 , 至于为射门要初始化为0 就是逻辑方面的事。