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

时间:2013-10-14 02:14:50

标签: 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;
  }
}                  

5 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:0)

&#39;我&#39;用作循环的条件变量。你不应该将它除以2.你必须划分数组元素。像

      if (numbers[i] % 2 == 0) {
        numberEvens++;
     }

然后它应该工作。感谢

答案 2 :(得分:0)

试用此代码

import java.util.Scanner;
public class OddEven {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("enter number Elements in Array");
        int n = s.nextInt();
        int arr[] = new int[n];
        System.out.println("enter Elements ");
        for(int i=0; i<n; i++) {
            arr[i]=s.nextInt();
        }
        int [] odd = filterOdd(arr);
        try {
            for(int i=0; i<n; i++) {
                System.out.println("Odd" + odd[i]);
            }
        } catch(ArrayIndexOutOfBoundsException e) {}
        int [] even = filterEven(arr);
        try {
            for(int i=0; i<n; i++) {
                System.out.println("Even" + even[i]);
            }
        } catch(ArrayIndexOutOfBoundsException e) {}
    }
    public static int[] filterOdd(int[] a) {
        int l = 0;
        int j = 0;
        for(int i=0; i<a.length; i++) {
            if(a[i]%2==1) {
                l++;
            }
        }
        int k[]=new int[l];
        for(int i=0; i<a.length; i++) {
            if(a[i]%2==1) {
                k[j] = a[i];
                j++;
            }
        }
        return k;
    }
    public static int[] filterEven(int[] a) {
        int l = 0;
        int j = 0;
        for(int i=0; i<a.length; i++) {
            if(a[i]%2==0) {
                l++;
            }
        }
        int k[] = new int[l];
        for(int i=0; i<a.length; i++) {
            if(a[i]%2==0) {
                k[j] = a[i];
                j++;
            }
        }
        return k;
    }
}

答案 3 :(得分:0)

public class Array {


    public static void main(String[] args) {
        // TODO code application logic here
        //Array declaration and value asign
        int number[]=new int[]{1,2,3,4,5,6,7,8,9};
        // for loop to move number
        for(int p=0;p<number.length;p++)
        {
            // check number is even or odd??
            if(number[p]%2==0)

                System.out.println(number[p]+ " is Even number");
            else
                System.out.println( number[p]+" is odd umber");




        }

                }


}

答案 4 :(得分:0)

奇数组一列,另一列偶数组

public class OddEven {

     public static void main(String[] args) {

        int arr[]={1,2,3,4,5,6,7,8};
        int ss[]=new int[10];
        int odd[]=new int[10];
        int i;
        int k;

        for( i=0;i<arr.length;i++)
        {
            if(arr[i]%2==0)
            {
               ss[i]=arr[i];
               System.out.print(""+ss[i]);
               System.out.print(" ");
            }

            if((arr[i]%2)!=0)
            {
                 odd[i]=arr[i];

                 System.out.print(""+odd[i]);
                 System.out.print(" ");
            }else
            {
                 System.out.println(" ");
            }
        }
    }
}

========================================输出====== ======================== 1 2
3 4
5 6
7 8