我在此行的代码中始终遇到此错误:错误:二进制运算符'<='的错误操作数类型
代码:if (FIRST_YEAR <= year <= LAST_YEAR || 1 <= month <= 12 || 1 <= day <= 31)
答案 0 :(得分:1)
您需要像&&
那样使用if ((FIRST_YEAR <= year && year<= LAST_YEAR) || .......)
答案 1 :(得分:1)
由于比较运算符的关联性
FIRST_YEAR <= year <= LAST_YEAR
与
相同(FIRST_YEAR <= year) <= LAST_YEAR
即您尝试将FIRST_YEAR
与year
进行比较,然后将其结果与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并不知道您要为
答案 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;
这样,您可以轻松调试和更易于管理的代码。同样,您肯定需要显示错误,例如您要在此处接受或拒绝用户或系统给定的日期,您肯定要显示问题,例如输入的月份不正确或年份不可接受,等等...