【问题标题】:My code in adding condition of range 1 - 9999 is not working using switch statement我在添加范围 1 - 9999 的条件中的代码无法使用 switch 语句
【发布时间】:2019-07-18 11:18:25
【问题描述】:

所以我在 If else 语句上创建了 LeapYearCal,我学习了 switch 语句,我想使用 switch 重新创建它。 不知何故,我的跳跃条件正在起作用,但我想添加条件,比如值必须在 1-9999 之间,否则它会返回 false。但是当我的代码不正确时,我该如何解决这个问题?

public static boolean isLeapYear(int year)
{
    switch ( year % 4)
    {
        case 0:
            if (year % 100 == 0)
            {
                    if ( (year % 400 == 0) )
                    {
                       if (year > 0)
                       {
                            if (year <= 9999)
                            {
                                return true;
                            }
                             else
                                return false;
                       }
                       else
                           return false;
                    }
                    else
                        return false;
            }
            else
                return true;
        default:
             break;
    }
    return false;

如果年份是闰年并且它的范围是 1-9999,我想输出“True”,如果它不在范围内,不管它是否是闰年,我想输出“False”

【问题讨论】:

  • 首先,清理你的代码。那里有太多的回报和障碍。其次,重新检查你的逻辑。第三:你输入了什么输入,你期望/得到什么输出?
  • 哪里失败了?
  • IMO,这不是学习 switch 的好用例。
  • @TaslimOseni 没有。这对于单元测试来说将是一项了不起的任务,因为每个可能的值都可以在没有代码的情况下评估为闰年与否。闰年的规则很简单
  • @ArielTabuzoJr。有两个位置返回 true。手动尝试您的代码,看看执行了什么

标签: java if-statement switch-statement


【解决方案1】:

在这个用例中使用 switch-case 语句是不合适的。此解决方案基于this code

public static boolean isLeapYear(int year){
        boolean flag = false;
        if (year > 0 && year < 10000) 
        {
            flag = false;
        } 
        else if(year % 400 == 0)
        {
            flag = true;
        }
        else if (year % 100 == 0)
        {
            flag = false;
        }
        else if(year % 4 == 0)
        {
            flag = true;
        }
        else
        {
            flag = false;
        }
        return flag;
}

【讨论】:

  • OP 明确表示其意图是使用 switch 语句
  • @Cheaker 只是一个注释:而不是所有这些:flag = ... 语句,将它们替换为:return 。您不需要 if 语句,也不需要额外的 return 语句。另外,在你的第一个 if 条件中设置 year % 4 != 0,因为任何闰年都可以被 4 整除
  • @TaslimOseni 在这里使用 switch 语句没有意义。即使你在这里使用它,也只是不好的做法。
猜你喜欢
  • 2016-08-26
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多