问题描述
publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.print("1000以内的完数");System.out.println();System.out.print(i);}}}用java语言编的不知哪错了。运行结果是输出了1~1000.
解决方案
解决方案二:
publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0&&i!=j)h=h+j;}if(h==i){System.out.print("1000以内的完数");System.out.println(i);}//System.out.println();//System.out.print(i);}}}
解决方案三:
第二个循环中h的值设置有问题,改成下面的:publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;System.out.println("1000以内的完数:");for(i=1;i<=1000;i++){h=0;for(j=1;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.println(i);}}}
解决方案四:
引用楼主u010278064的回复:
publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.print("1000以内的完数");System.out.println();System.out.print(i);}}}用java语言编的不知哪错了。运行结果是输出了1~1000.
System.out.print(i);写在if范围之外了,所以不管if判断是否为TRUE每次for循环都会把i给输出了