此代码以不计算其平均值的方式打印数组(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)+ "}.");
}
答案 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