我收到从int到boolean类型不匹配的错误

时间:2016-12-31 13:37:25

标签: java operators

代码是使用最后一位为1或0来检查数字是偶数还是奇数。 如果最后一位为1,它将进入if并打印奇数

import java.util.Scanner;

public class Even_or_odd {
    public void Check_even_or_odd(int a) {
        if(a&1)//error:Type mismatch: cannot convert from int to boolean
            System.out.println("odd");
        else
            System.out.println("even");
   }
   public static void main(String[] args) {
        System.out.println("enter a number to check even or odd");
        Scanner scan=new Scanner(System.in);
        int a=scan.nextInt();
        scan.close();
        Even_or_odd e=new Even_or_odd();
        e.Check_even_or_odd(a);
    }
}

2 个答案:

答案 0 :(得分:4)

您的代码通过使用a屏蔽其二进制表示来测试1奇数/偶数,其中所有位都设置为零,除了最低有效位,设置为1

使用1屏蔽时,奇数会产生1;偶数将产生零。但是,您无法编写if (1)if (0),因为Java中没有从intboolean的隐式转换。你需要写

if ((a&1) != 0)

解决此问题。

答案 1 :(得分:3)

使用模数检查输入值,而不是二进制操作,我猜你正在尝试这样做:

if (a % 2 == 0) {
  System.out.println("even");
} else {
  System.out.println("odd");
}

在if语句的condition块中,你必须有一个布尔值或一个计算结果为布尔值的表达式。 a&1计算为整数。

另见Check whether number is even or odd