如何修复Java中的错误操作数错误?

时间:2018-11-11 20:15:49

标签: java

我在此行的代码中始终遇到此错误:错误:二进制运算符'<='的错误操作数类型

代码:if (FIRST_YEAR <= year <= LAST_YEAR || 1 <= month <= 12 || 1 <= day <= 31)

4 个答案:

答案 0 :(得分:1)

您需要像&&那样使用if ((FIRST_YEAR <= year && year<= LAST_YEAR) || .......)

答案 1 :(得分:1)

由于比较运算符的关联性

FIRST_YEAR <= year <= LAST_YEAR

相同
(FIRST_YEAR <= year) <= LAST_YEAR

即您尝试将FIRST_YEARyear进行比较,然后将其结果与LAST_YEAR进行比较。

第一次比较的结果是一个布尔值:它是否小于或等于。

因此,然后将布尔值与某种数字进行比较。两个操作数都可以转换为数字类型的语言规范explicitly requires;由于布尔值不可转换,这是编译器错误。

您必须做两个单独的比较,然后将它们与在一起:

(FIRST_YEAR <= year) // a boolean
  &&                 // an operator taking 2 boolean operands
(year <= LAST_YEAR)  // a boolean

答案 2 :(得分:0)

对于运算,重要的是要包括括号,类似于在数学运算中使用括号:

如果(FIRST_YEAR <=年&&年<= LAST_YEAR)|| (1 <=月&&月<= 12)|| (1 <=天&&天<= 31)

每当分配操作数时,都需要包括该变量,并且每个条件都必须放在方括号中,以便Java正确读取它。对于您的代码,java并不知道您要为分配<= LAST_YEAR,也不知道要将逻辑运算符分配给哪个变量。

答案 3 :(得分:0)

我建议打破你的逻辑例子

Boolean check = false;

//step 1 logic: year check for first and last year
if(FIRST_YEAR=< Year && Year <=LAST_Year)
check = TRUE;

// if step 1 is true now step 2: month is between 1 and 2:
if(month =>1 and month <=12)
check = check && TRUE;

这样,您可以轻松调试和更易于管理的代码。同样,您肯定需要显示错误,例如您要在此处接受或拒绝用户或系统给定的日期,您肯定要显示问题,例如输入的月份不正确或年份不可接受,等等...