我正在编写一个程序,只从整数数组中打印偶数。
以下代码如下:
public class ForLoopExample3
{
public static void main(String[] args)
{
int[] arr = {7, 6, 9, -2, 8, 12, 17, -25, 15, 18, 21, 13};
for(int i = 0; i < arr.length; i++)
{
if((arr[i] % 2) > 0)
continue;
System.out.println(arr[i]);
}
}
}当我运行上面的程序时,我得到以下输出:

所以问题是为什么-25被显示在偶数中?
发布于 2014-03-18 18:42:05
-25 mod 2是-1,所以if()测试成功:值不大于0。您应该测试!= 0。
发布于 2014-03-18 18:43:39
这与%模运算符在Java中的工作方式有关。这个运算符的结果的符号不能与原来的数字相反。也就是说,如果原始数为负数,则模数为0或负。
根据JLS,第15.17.3款的说法
由此得出,余数运算的结果只有在股利为负时才能是负的,只有当红利为正时才能是正的。此外,结果的大小总是小于除数的大小。
您将从-1的结果中获得1,而不是从-25 % 2的结果中获得-25 % 2,并且执行print语句。
检查余数是否不等于零。
if((arr[i] % 2) != 0)
continue;或者,为了消除continue.
if((arr[i] % 2) == 0)
{
System.out.println(arr[i]);
}发布于 2014-03-18 18:44:01
你应该把“to”改为“to!”.这里‘(arri% 2) != 0’表示不等于零的余数,在这种情况下,您将继续。否则你会打印。
https://stackoverflow.com/questions/22488193
复制相似问题