2017-03-08 6 views
1
package javaapplication1; 

/** 
* 
* @author 
*/ 
public class JavaApplication1 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     int[] scores = {1,2,3,4,5,6}; 
     int[] fin = extractAllEvens(scores); 
     for(int i =0; i<fin.length; i++) { 
      System.out.println(fin[i]); 
    } 
    } 
     public static int[] extractAllEvens(int[]scores) { 
      int evenCount = 0; 
      for (int i =0; i<scores.length; i++) { 
       if (scores[i] % 2 ==0) { 
        evenCount++; 
       } 
     } 
     int[] newScores = new int[evenCount]; 
     int j = 0; 
     for(int i = 0; i<scores.length; i++) { 

      if(scores[1] % 2 ==0) { 
      newScores[1] = scores[i]; 
      j++; 
      } 
     } 
    return newScores; 
} 
} 

私は出力2、4にしようとしている、6配列糸引き数

しかし、私は、このような0,6,0として結果を得続けます。

私はどこかで変数iとjまたは数字1とおそらくその場所を混乱させたと思います...誰かが正しい方向に私を導くのを助けることができますか?

答えて

0

最後のループでは固定ループインデックスとして1が使用されます。

代わりにiに変更してください。

+0

うーん1はiと他の1のJでなければなりません:) – minigeek

+0

あなたが正しいです。そして、実際には私たちを取り去ってください:最初の場所ではあまり混乱しないコードを書こうとします:-) – GhostCat

1

scores[1] % 2 == 0およびnewScores[1] = scores[i]

インデックス1(第2要素)のみをnewArrayとしてハードコードしました。

1ではなく、jをインデックスとして使用しているはずです。

0

変更するには、このようなループのための第二 -

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

乾杯!それは

if(scores[i] % 2 ==0) {//← i here 
     newScores[j] = scores[i];//← j here 

O/Pでなければなりません

0

代わりの

if(scores[1] % 2 ==0) { 
     newScores[1] = scores[i]; 

:2 4 6

関連する問題