简体   繁体   English

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

[英]How to find the Odd and Even numbers in an Array?

Right now, I'm trying to find the odd and even numbers of an array. 现在,我正在尝试查找数组的奇数和偶数。 Here's the code of what I have so far. 这是到目前为止的代码。 I know my findEvens() and findOdds() methods are messed up because they keep giving me off values whenever I try to print the final result. 我知道我的findEvens()和findOdds()方法很混乱,因为每当我尝试打印最终结果时,它们都会不断给我提供值。 For example, if I try to find the odds of {1,5,8,3,10}, it gives me {5,3,0}. 例如,如果我尝试找到{1,5,8,3,10}的赔率,它给了我{5,3,0}。 And if I try to find the evens of {2,5,8,7,19}, it gives me {2,8,0}. 而且,如果我尝试找到{2,5,8,7,19}的偶数,它将得到{2,8,0}。 Anyone know why? 有人知道为什么吗?

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

You're problem is in counting how many even numbers you have 您的问题是要计算您有多少个偶数

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

this will always return a number that is half the size of the length of numbers because you're doing mod division on the number of elements in the array, not on the elements themselves. 这将始终返回一个数字,该数字是数字长度的一半,因为您正在对数组中的元素数量进行mod划分,而不是对元素本身进行mod划分。 Add numbers[i] to the if statement numbers[i]添加到if语句

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

looks like you've got the same problem with odd count 看起来您在奇数计数时遇到了同样的问题

'i' is used as conditional variable for looping. “ i”用作循环的条件变量。 You should not divide this by 2. You have to divide the array element. 您不应将其除以2。必须将数组元素除以。 like 喜欢

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

then it should work. 那么它应该工作。 Thanks 谢谢

Try This Code 试试这个代码

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;
    }
}
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");




        }

                }


}

Odd array one columns and another columns even array 一列奇数数组,另一列偶数数组

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(" ");
            }
        }
    }
}

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM