如何在数组中找到奇数和偶数?

Jer*_* Ng 0 java arrays methods

现在,我正试图找到数组的奇数和偶数.这是我到目前为止的代码.我知道我的findEvens()和findOdds()方法搞砸了,因为每当我尝试打印最终结果时,它们都会让我不再使用值.例如,如果我试图找到{1,5,8,3,10}的赔率,它会给我{5,3,0}.如果我试图找到{2,5,8,7,19}的平均值,它会给我{2,8,0}.谁知道为什么?

public class Scores {
   private int[] numbers;
   public Scores(int[] numbersIn) {
      numbers = numbersIn;
   }
   public int[] findEvens() {
      int numberEvens = 0;
      for (int i = 0; i < numbers.length; i++) {
         if (i % 2 == 0) {
            numberEvens++;
         }
      }
  int[] evens = new int[numberEvens];
  int count = 0;
  for (int i = 0; i < numbers.length; i++) {
     if (numbers[i] % 2 == 0) {
        evens[count] = numbers[i];
        count++;
     }      
  }      
  return evens;
}
public int[] findOdds() {
  int numberOdds = 0;
  for (int i = 0; i < numbers.length; i++) {
     if (i % 2 == 0) {
        numberOdds++;
     }
  }
  int[] odds = new int[numberOdds];
  int count = 0;
  for (int i = 1; i < numbers.length; i++) {
     if (numbers[i] % 2 == 1) {
        odds[count] = numbers[i];
        count++;
     }      
  }      
  return odds;
 }
 public double calculateAverage() {
      int sum = 0;
      for (int i = 0; i < numbers.length; i++) {
         sum += numbers[i];
      }   
      return (double) sum / numbers.length;
   }
 public String toString() {
    String result = "";
    for (int i = 0; i < numbers.length; i++) {
       result += numbers[i] + "\t";
    }
    return result;
 }
public String toStringInReverse() {
  String result = "";
  for (int i = numbers.length - 1; i >= 0; i--) {
     result += numbers[i] + "\t";
  }
  return result;
  }
}                  
Run Code Online (Sandbox Code Playgroud)

dre*_*ees 6

你的问题在于计算你有多少偶数

public int[] findEvens() {
  int numberEvens = 0;
  for (int i = 0; i < numbers.length; i++) {
     if (i % 2 == 0) {
        numberEvens++;
     }
  }
Run Code Online (Sandbox Code Playgroud)

这将总是返回一个数字长度的一半的数字,因为你正在对数组中元素的数量进行mod划分,而不是对元素本身进行.添加numbers[i]if声明中

public int[] findEvens() {
  int numberEvens = 0;
  for (int i = 0; i < numbers.length; i++) {
     if (numbers[i] % 2 == 0) {
        numberEvens++;
     }
  }
Run Code Online (Sandbox Code Playgroud)

看起来你有奇怪计数的同样问题