【问题标题】:How to find the Odd and Even numbers in an Array?如何找到数组中的奇数和偶数?
【发布时间】:2013-10-14 02:14:49
【问题描述】:

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

【问题讨论】:

  • 各种方法返回的数字顺序重要吗?即是否可以接受任何订单?甚至被订购?

标签: java arrays methods


【解决方案1】:

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

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

这将始终返回一个大小为数字长度一半的数字,因为您正在对数组中的元素数量进行 mod 除法,而不是元素本身。在if 语句中添加numbers[i]

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

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

【讨论】:

  • Odds 还有一个问题:if 表达式来自Evens
  • 好吧,我设法修复了这两种方法并更改了 if 语句。我认为现在应该一切正常。非常感谢!
  • 接受正确答案对每个相关人员都有好处。这意味着单击上下投票按钮下答案旁边的小复选标记
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    试试这个代码

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

    【讨论】:

      【解决方案4】:
      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");
      
      
      
      
              }
      
                      }
      
      
      }
      

      【讨论】:

        【解决方案5】:

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

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          • 1970-01-01
          • 1970-01-01
          • 2016-04-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多