3 回答
TA贡献1878条经验 获得超4个赞
由于比较运算符的结合性
FIRST_YEAR <= year <= LAST_YEAR
是相同的
(FIRST_YEAR <= year) <= LAST_YEAR
即你正在尝试比较FIRST_YEAR到year,然后那结果进行比较LAST_YEAR。
第一次比较的结果是一个布尔值:它是否小于或等于,或者不是。
因此,然后将布尔值与某种数字进行比较。语言规范明确要求两个操作数都可以转换为数字类型;由于 boolean 不是那么可转换,这是一个编译器错误。
您必须进行两次单独的比较,并将它们组合在一起:
(FIRST_YEAR <= year) // a boolean
&& // an operator taking 2 boolean operands
(year <= LAST_YEAR) // a boolean
TA贡献1790条经验 获得超9个赞
我建议打破你的逻辑示例
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;
通过这种方式,您可以轻松调试并且更易于管理的代码。此外,您肯定需要在此处显示错误,例如您希望接受或拒绝用户或系统给出的日期,您肯定会希望显示问题,例如输入的月份不正确或年份不可接受等...
添加回答
举报