比较偶数/奇数w / java和布尔值

时间:2017-10-27 06:53:24

标签: java boolean

我正在编写一个接收两个数字的方法,如果它们都是偶数或两个都将返回true ...如果只有一个是奇数而一个是偶数,则返回false。 它需要返回一个布尔语句,但它不工作..任何帮助表示赞赏!感谢...

 public static boolean compareEvenOdd(int x, int y) {
            if((x % 2 ==0) && ( y% 2==0))||((x%2 != 0) && (y%2 != 0)){
                return true;
            } else
                return false;

}

5 个答案:

答案 0 :(得分:7)

您可以执行以下操作(可能是最短版本):

public static boolean compareEvenOdd(int x, int y) {
    return ((x + y) % 2) == 0;
}

两个奇数之和和两个偶数之和是偶数,一个奇数和一个偶数之和是奇数。因此,您添加数字并检查解决方案是否可以被2分割。

答案 1 :(得分:3)

这是使用按位运算符的绝佳机会。您可以使用带有数字&的二进制AND(1)运算符将整数减少到其最后的二进制数字。对于偶数,最后一位数始终为0,对于奇数,该数字始终为1。如果你的两个数字具有相同的最后二进制数字,那么它们具有相同的奇偶校验 - 也就是说,它们都是偶数或两者都是奇数。所以我会写这样的方法。

public boolean sameParity(int x, int y) {
    return (x & 1) == (y & 1);
}

请注意,括号很重要,因为通常的Java操作顺序会将==置于&之上。

答案 2 :(得分:1)

解释:

  • xy是奇怪的:x+y甚至是
  • xy均为:x+y甚至是
  • x是奇数,y是奇数:x+y是奇数
  • x是偶数,x是偶数:x+y是奇数
public static boolean compareEvenOdd(int x, int y) {
        return (x+y)%2==0
}

答案 3 :(得分:1)

似乎你错过了if语句中条件的另外一对括号。 这对我有用:

public static boolean compareEvenOdd(int x, int y) {
    if (((x % 2 ==0) && ( y% 2==0))||((x%2 != 0) && (y%2 != 0))){
        return true;
    } else
    return false;

}

如果这不符合您的喜好,您还要进一步说明哪些不起作用?是否在运行时抛出错误,输出错误,......?

答案 4 :(得分:0)

  • if语句始终具有if (...)形式,并且在条件周围有自己的括号。因此你就错过了。

所以(删除了不需要的大括号):

public static boolean compareEvenOdd(int x, int y) {
    if ((x % 2 == 0 && y % 2 == 0)
        || (x%2 != 0 && y % 2 != 0)) {
        return true;
    } else 
        return false;
}

如其他答案所示,这应该简化, 因为if+return boolean意味着冗余地使用布尔值,而不是最全面(如== true):

    return (x % 2 == 0 && y % 2 == 0)
        || (x % 2 != 0 && y % 2 != 0);

    return (x % 2) == (y % 2);

    return (x - y) % 2 == 0;