求1-500之内的所有“完数”。所谓完数就是一个数=各个因子之和。程序清单如下:
public class CompletedNumber{
  private static final int COUNT=100;
  public static void main(String[ ] args){
    System.out.println ("1—500之内的完数   因子");
    CompletedNumberTest numObj = new CompletedNumberTest(COUNT);
    for(int i=1; i<=500; i++)
      numObj.IsCompletedNumber(i);      
  }
}class CompletedNumberTest{
  private static int[] arrOfFactors;
  
  CompletedNumberTest(int count){
    arrOfFactors = new int[count];
  }
  
  public void IsCompletedNumber(int number){
    int countOfFactors=0, numOfFactors=0;
    for(int j=1; j<=number/2; j++){
      if (number%j==0){
        countOfFactors+=j;
        arrOfFactors[numOfFactors]=j;
        numOfFactors++;       
      }
    }
    if (number==countOfFactors){
      System.out.println(number+": ");
      for(int i=0; i<numOfFactors; i++)
        System.out.print(arrOfFactors[i]+',');
    }  
  }}

解决方案 »

  1.   

    System.out.print(arrOfFactors[i]+',');
    这个地方敲错拉  
    改为--》System.out.print(arrOfFactors[i]+",");
      

  2.   

    不是这个问题,我找到问题了。是这里的事情:
    for(int j=1; j<=number/2; j++)
    应该改为:
    for(int j=1; (int)j<=number/2; j++){
      

  3.   

    (int)j<=number/2;
    什么意思,没看出来,j有可能不是整形吗?
      

  4.   

    不是这个问题,我找到问题了。是这里的事情:
    for(int j=1; j<=number/2; j++)
    应该改为:
    for(int j=1; (int)j<=number/2; j++)
                 -----------------
                   这里怎么回事啊?