我正在编写一个程序,只打印出整数数组中的偶数。
以下是代码:
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会在偶数中显示?
答案 0 :(得分:4)
它与%
模数运算符在Java中的工作方式有关。此运算符的结果符号不能与原始数字相反。也就是说,如果原始数字是负数,则模数将为0或负数。
从该规则可以得出,只有当被除数为负时,余数运算的结果才可以是负数,只有在被除数为正数时才能为正数。而且,结果的大小总是小于除数的大小。
您从-1
的结果中获得1
,而不是-25 % 2
,并且您的print语句会执行。
检查余数是否不等于零。
if((arr[i] % 2) != 0)
continue;
或者,消除continue
...
if((arr[i] % 2) == 0)
{
System.out.println(arr[i]);
}
答案 1 :(得分:3)
-25 mod 2
为-1
,因此您的if()测试成功:该值不大于0.您应该测试!= 0
。
答案 2 :(得分:1)
你应该替换'&gt;'到'!='。这里'((arr [i]%2)!= 0'表示余数不等于零,在这种情况下你会继续。否则你会打印。
答案 3 :(得分:0)
如果您打印-25 % 2
,您将获得-1
,因为您的条件是
if((arr[i] % 2) > 0)
当该操作为零或更少时,它将打印为甚至,这是不正确的。您应该检查操作是否等于0
。偶数为零,否则,它很奇怪:
if ((arr[i] % 2) == 0)
// even
else
// odd
答案 4 :(得分:0)
那是因为-25%2 = -1且-1 < 0
答案 5 :(得分:0)
你的mod语句应该是!= 0不是&gt; 0. -25%2 = -1。