在Java中,怎么判断一个变量是否在两个数之间。“The operator <= is undefined for the argument type(s) boolean, int”的错误是什么?

  在Java程序的编写中,我们经常会遇到,需要比较一个变量是否在两个数之间的问题,并根据结果导向不同的操作。

  到底应该怎么写,“The operator <= is undefined for the argument type(s) boolean, int”的报错到底是怎么回事?下面,为大家一一解答

 

如上,要判断变量month,是否在4,10之间,我们很可能写成 if (4 <= month <= 10)

但这时eclipse提示错误,The operator <= is undefined for the argument type(s) boolean, int

这个错误信息表明你在代码中使用了 <= 运算符,但它的操作数类型不匹配。

具体来说,<= 运算符的左操作数是一个 boolean 类型,而右操作数是一个 int 类型,

这是不允许的。

可是明明一边是4,一边是10,哪来的Boolean类型呢?

为什么 if (4 <= month <= 10) 是错误的?

  • 在 Java 中,<= 是一个二元运算符,它需要两个操作数并返回一个 boolean 值。

  • 当你写成 4 <= month <= 10 时,Java 会先计算 4 <= month,得到一个 boolean 值(true 或 false)。

  • 然后,Java 会尝试将这个 boolean 值与 10 进行比较,而 boolean 类型不能与 int 类型比较,所以报出错误。

那正确的应该怎么写呢?

因为4<=month 的结果是boolean 值(true 或 false

month<=10 的结果也是boolean 值(true 或 false

而最终结果作为if的条件语句,也必须是boolean 值(true 或 false

所以我们需要一种运算符,它的输入为boolean 值,输出也为boolean 值,即逻辑运算符

在这里我们需要将条件拆分为两个部分,并使用逻辑运算符 &&(逻辑与)来连接它们。

正确写法if (month >= 4 && month <= 10)

此时报错消失

if (month >= 4 && month <= 10) {
    System.out.println("month is between 4 and 10");
}

我们为month赋一个值7,看看运行过程

month >= 4:判断 month 是否大于或等于 4。7>=4,结果为true

month <= 10:判断 month 是否小于或等于 10。7<=10,结果为true

&&:逻辑与运算符,两个条件都必须为 true时,结果才为true,此时为true

7在4和10之间,没问题。

---------------------------------------

有疑问可以评论

求点赞~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值