2017-03-08 50 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。

我想我搞砸了變量與我或j或數字1,可能他們的位置...任何人都可以幫助我帶領正確的方向嗎?

回答

0

您的最後一個循環使用1作爲固定循環索引。

改爲而不是

+0

嗯之一應該是i和其他一個Ĵ:) – minigeek

+0

你是正確的。真正帶走我們的是:操作者應該儘可能地減少混淆的代碼:-) – GhostCat

1

scores[1] % 2 == 0 and newScores[1] = scores[i]

您已經硬編碼僅使用newArray的索引1(第二個元素)。

您可能應該使用j作爲索引而不是1

0

更改第二個for循環這樣的 -

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

乾杯!

0

代替

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

它應該是

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

O/P:2 4 6