【问题标题】:Why does this if statement return the value true?为什么这个 if 语句返回值 true?
【发布时间】:2020-03-16 15:03:16
【问题描述】:
public static boolean isLeapYear(int year) {
    if(year < 1 || year > 9999) {
        return false;
    }else {
        if(year % 4 == 0) {
            return true;
        }if(year % 100 != 0 && year % 400 == 0) {
            return true;
        }else {
            return false;
        }
    }
}

整数(年)是 9000,它应该返回 false,但返回 true。什么地方出了错?

【问题讨论】:

  • 如果(year % 4 == 0) 再次检查您的逻辑,则返回 true
  • 是 4 的倍数。
  • 9000 / 4 = 2250 没有余数。用计算器检查一下。
  • 请记住,计算机完全按照您的指示执行操作,而不是您希望它们执行的操作。

标签: java if-statement integer


【解决方案1】:

分析器在第 5 行:

year % 4 == 0

因为 9000 可以被 4 整除,所以计算结果为真。

【讨论】:

    【解决方案2】:

    正如其他人所说,对于 year=9000,year%4 的计算结果为 0。 这是计算闰年的逻辑

    bool isLeap = false;
    if (year % 4 == 0) {
        if (year % 100 == 0) {
            if (year % 400 == 0) {
                isLeap = true;
            }
            else {
                isLeap = false;
            }
        }
        else {
            isLeap = true;
        }
    }
    else {
        isLeap = false;
    }
    return isLeap
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-15
      • 2015-05-06
      • 2019-10-04
      • 1970-01-01
      • 2014-02-15
      • 2019-10-09
      • 1970-01-01
      • 2022-12-09
      相关资源
      最近更新 更多