0

现在,我正在尝试查找数组的奇数和偶数。这是我到目前为止的代码。我知道我的 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;
  }
}                  
4

5 回答 5

7

你的问题是计算你有多少个偶数

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++;
     }
  }

看起来你在奇数上遇到了同样的问题

于 2013-10-14T02:22:31.600 回答
0

'i' 用作循环的条件变量。您不应该将其除以 2。您必须除以数组元素。喜欢

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

那么它应该可以工作。谢谢

于 2014-03-26T02:20:34.573 回答
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");




        }

                }


}
于 2015-11-01T12:25:42.820 回答
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;
    }
}
于 2015-08-02T14:53:11.413 回答
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

于 2017-05-15T02:16:48.980 回答