我想使用方法在数组中打印奇数

时间:2016-10-10 20:23:46

标签: java arrays

此代码以不计算其平均值的方式打印数组(1,7,8,22,37,55,80)。

我想要的输出(8,22,80)。

我得到的输出(1,7,8,22,37,55,80)。

///The getEvens() method
public static int[] getEvens(int a[]) {

    int myEvens = 0;

    for (int i = 0; i < a.length; i++) {
      if (a[i] % 2 == 0) {
         myEvens++;
      }    
    }

    Arrays.sort(a);

    return a;
}

\\\\The main method
public static void main(String args[]) {

    int [] getEvens;
    int [] myArray = {1,8,80,22,55,37,7};
    int [] evenResult = getEvens(myArray);

    System.out.print("\nThe even numbers in the array(" +    Arrays.toString(myArray)+ ") are:{ " + Arrays.toString(evenResult)+ "}.");

}

2 个答案:

答案 0 :(得分:0)

getEvens方法中,您不会使用偶数制作新数组。你要做的只是数数。您需要将其更改为以下内容:

public static int[] getEvens(int a[]) {
    int myEvens = 0;

    for (int i = 0; i < a.length; i++) {
      if (a[i] % 2 == 0) {
         myEvens++;
      }    
    }

    //the code to actually add the evens to a new array
    int[] evenArray = new int[myEvens];
    int evenIndex = 0;
    for (int i = 0; i < a.length; i++) {
      if (a[i] % 2 == 0) {
        evenArray[evenIndex] = a[i];
        evenIndex++;
      }    
    }
    Arrays.sort(evenArray);

    return evenArray;
}

答案 1 :(得分:0)

这是用C ++编写的一段代码,但它与Java类似:

if(!(num & 1))

它的作用是我们在阵列上存储 i 元素,我们检查数字上的最后位并用 1

例如:

我们取二进制的数字1为00000001,因为二进制中的所有位置都是2的幂,唯一可以使数字奇数或偶数的位是最后一个只加总 1 额外的数字。所以在这种情况下 1 ,结果会给出 true ,我们正在寻找与 0 匹配的所有数字,我们否定结果匹配 1

我们接下来的数字是 8 ,二进制数字是:00001000

128 64 32 16 8 4 2 1 - (2的幂值)

0 0 0 0 1 0 0 0 -----------(二进制位置)

0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 = 8

因为我们的最后一位是 0 ,我们知道这个数字是偶数100%,所以我们的if:

if(num & 1)

将是错误的,但因为我们没有(),它将通过if并打印数字。

你的输出应该如你所描述的那样,即使(8,22,80)是偶数,你要求打印奇数,这是剩下的数字。

如果你正在寻找奇数(1,55,37,7),你需要更改if以使结果为真,当它与 1

brew install opencv3 --HEAD --with-contrib