首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >-25在Java中被列为偶数

-25在Java中被列为偶数
EN

Stack Overflow用户
提问于 2014-03-18 18:39:41
回答 6查看 83关注 0票数 0

我正在编写一个程序,只从整数数组中打印偶数。

以下代码如下:

代码语言:javascript
复制
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被显示在偶数中?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-03-18 18:42:05

-25 mod 2-1,所以if()测试成功:值不大于0。您应该测试!= 0

票数 3
EN

Stack Overflow用户

发布于 2014-03-18 18:43:39

这与%模运算符在Java中的工作方式有关。这个运算符的结果的符号不能与原来的数字相反。也就是说,如果原始数为负数,则模数为0或负。

根据JLS,第15.17.3款的说法

由此得出,余数运算的结果只有在股利为负时才能是负的,只有当红利为正时才能是正的。此外,结果的大小总是小于除数的大小。

您将从-1的结果中获得1,而不是从-25 % 2的结果中获得-25 % 2,并且执行print语句。

检查余数是否不等于零。

代码语言:javascript
复制
if((arr[i] % 2) != 0)
     continue;

或者,为了消除continue.

代码语言:javascript
复制
if((arr[i] % 2) == 0)
{
    System.out.println(arr[i]);
}
票数 4
EN

Stack Overflow用户

发布于 2014-03-18 18:44:01

你应该把“to”改为“to!”.这里‘(arri% 2) != 0’表示不等于零的余数,在这种情况下,您将继续。否则你会打印。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22488193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档