Java -错误:不兼容类型:无法将int转换为布尔值

pkbketx9  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(533)

考虑操作:(7〉〉1)和1
当我们放入print语句时,它工作:*系统输出打印输入((7〉〉1)&1);//作品 *
但如果我们输入if条件,则会出现错误:

if((7〉〉1)&1)系统输出打印输入('此处');#显示错误

错误:不兼容的类型:如果((7〉〉1)&1)System.out.println(123);
我不明白这可能是什么问题?因为同样的工作在C++。
我试图给变量int赋值a=(7〉〉1)&1
如果(a==1)系统输出打印输入('工程');//它在此处有效,但直接传递时无效

dkqlctbz

dkqlctbz1#

正如SmallPepperZ所说,在java中,if语句不接受任何参数,除了boolean原语类型,或者可以计算为boolean原语类型的语句。
为了进一步解释SmallPepperZ的答案,您的第二个问题(要求使用变量a)的原因是,表达式的求值方式如下:

if( (7>>1)&1 == 1 )
if( 3 & 1 == 1 )
if( 3 & true )

您看到的错误应该如下所示:

The operator & is undefined for the argument type(s) int, boolean

要解决此问题,请在左侧的表达式周围添加一组括号

if( ((7>>1)&1) == 1 ) System.out.println("Here");

其通过以下方式进行评估:

if( ((7>>1)&1) == 1 )
if( ((3)&1) == 1 )
if( (3&1) == 1 )
if( 1 == 1 )
if( true )
e4yzc0pl

e4yzc0pl2#

与C++不同,Java不会将整数10解释为与布尔值truefalse等效
有关详细信息,请参见Why boolean in Java takes only true or false? Why not 1 or 0 also?

相关问题