0

次のコードを修正して正しく機能させる方法を教えてもらえますか?

整数の配列を受け取り、偶数の値のみを含む新しい配列を返すメソッドfilterEvensを記述します。

偶数の値のみを含む新しい配列。例えば:

int[] data = {1, 3, 4, 2, 0, 5, -2};
int[] evens = filterEvens(data);

public static int[] filterEvent(int[] data) {
    int countLength = 0;

    for (int i = 0; i < data.length; i++) {
        if (data[i] % 2 == 0) {
            countLength++; 
        }
    }

    int[] filArray = new int[countLength]; 
    for (int i = 0; i < data.length; i++) {
        if (data[i] % 2 == 0) {
            filArray[i] = data[i]; 
        }
    }

    return filArray;  
}
4

2 に答える 2

1

間違ったインデックスを埋めています。

あなたが持っている

if(data[i]%2==0)
{
  filArray[i]= data[i] ; 
}

これはデータのセルには正しいですが、filArray のセルは間違っています。

 int j = 0; 
 for (int i =0; i< data.length;i++)
  {
    if(data[i]%2==0)
    {
      filArray[j]= data[i] ;
      j++; 
    }
  }

残りは問題ないようです。ArrayListこれをより効率的にすることができるので、見てみる必要がありますが

于 2012-10-07T23:59:12.707 に答える
1

ここでの問題は次のとおりです。

for (int i =0; i< data.length;i++)
  {
    if(data[i]%2==0)
    {
      filArray[i]= data[i] ; 
    }
}

値 0 からループしています --> data.length。配列 filArray[i] の長さが短いため、これは問題です。

このように想像してみてください。あなたは誰かの家を探しています。家の番号は 2000 から 3000 までです。次に、彼らは 4000 Emerald Dr に住んでいると言われます。コンピューターが家を見つけようとしていることを除いて、ここでも同じです。

于 2012-10-08T00:00:38.607 に答える