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

Rus*_*wal 3 java operators

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

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

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

if ((a&1) != 0)
Run Code Online (Sandbox Code Playgroud)

来解决这个问题。