2017-09-27 4 views
1

数字の配列と仕切りを取り、仕切りで割り切れる数の配列を返すコードを作成しました。 エラー: エラー:Javaのdivisible numbersコード

public class EvenNumbers { 
    public static int[] divisibleBy(int[] numbers, int divider) { 
     int i = 0; 
     int[] divisibleNumbers = new int[0]; 
     while (i < numbers.length){ 
      if (numbers[i] % divider == 0){ 
       divisibleNumbers.push(numbers[i]); 
       i++; 
      } else { 
       i++; 
      } 
     } 
     return divisibleNumbers; 
    } 
} 

は、しかし、私は私が解決する方法を知らないエラーを取得するプッシュ要素なステートメントでシンボルを見つけることができません。

私はこの2つのエラーを修正する方法を知っている人は、コメントに答えてください、ヘルプは多くのappriciatedです。

+1

' IF(番号[I]%ディバイダ= 0) 'にあなたの方法を簡素化

[i]%divider == 0) ' –

+0

oh二重等号を忘れましたoops – CWilliams

+2

Javaは_not_ JavaScriptではありません。要素を配列に' push() 'することはできません。 –

答えて

1

あなたは値

if (numbers[i] % divider == 0){

あなたは、リストを使用してみてくださいサイズは、変更しない[0]要素の配列を作成しているか、大きなアレイを割り当てないで、==と比較する必要が

List<Integer> divisibleNumbers = new ArrayList<Integer>(); 

それとも

int[] divisibleNumbers = new int[numbers.length]; //since you will never get more numbers than those which are in numbers 

とASの要素を追加します。あなたはそれがJavaScriptのシンタックスだ、配列に要素を追加するためにpush()を使用することはできません

divisibleNumbers.add(element); //list 
divisibleNumbers[position] = element; //array 
+0

これはコンパイルされません。プリミティブ 'int'は有効なジェネリック型ではありません。 –

+0

が固定されている場合は、プリミティブの代わりにIntegerを使用してくださいint – Aldeguer

2

事前にdividerで割り切れる要素の数がわからず、配列のサイズが固定されているため、リストではなく配列でなければなりません。

public static List<Integer> divisibleBy(int[] numbers, int divider) { 
    List<Integer> divisibleNumbers = new ArrayList<>(); 
    for (int number : numbers) { 
     if (number % divider == 0) { 
      divisibleNumbers.add(number); 
     } 
    } 
    return divisibleNumbers; 
} 

以上の官能アプローチを選択します: - > `IF(番号

public static int[] divisibleBy(int[] numbers, int divider) { 
    return Arrays.stream(numbers) 
      .filter(number -> number % divider == 0) 
      .toArray(); 
}