2017-03-08 28 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