编写应用程序,求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。

解决方案 »

  1.   

    就是不断轮询,sum值会变,然后需要重置为0一下...
    自己好好看看,很简单
      

  2.   

    第五行没有申明sum啊,只是对sum赋值为0:sum=0,目的是重置sum,至于为什么重置为0,那就要思考下完数的概念了,自己好好看看吧。
      

  3.   


     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 就是逻辑方面的事。