0

数値の素因数を取得できますが、コードでは、

static int[] factorsOf (int val) {
  int index = 0;
  int []numArray = new int[5];

  System.out.println("\nThe factors of " + val + " are:");
  for(int i=1; i <= val; i++)
  {
      if(val % i == 0)
      {   
          numArray [index] = i;
          val=val/i;
          index++;
      }
  }
  return numArray;
}

数値が 21 だとすると、配列の範囲が 5 であると判断したため、1,3,7,0,0 を取得します。どうすれば 0 を削除して、1,3,7 にすることができますか?

4

1 に答える 1

0

質問に直接答えるには、次を使用します。

int[] newArray = new int[3];
System.arraycopy(numArray, 0, newArray, 0, index);
return newArray;

ただし、これはスケーラブルではありません。Java の Collections フレームワークを使用して、任意のサイズの結果セットに対して簡単に行う方法を次に示します。

static int[] factorsOf (int val) {
    List<Integer> primes = new ArrayList<Integer>();

    System.out.println("\nThe factors of " + val + " are:");
    for(int i=1; i <= val; i++) {
        if(val % i == 0) {   
            primes.add(i);
            val=val/i;
        }
     }
     return primes.toArray();
}
于 2011-06-03T06:26:06.980 に答える