我的公共布尔方法中的无法访问的语句

时间:2016-10-22 06:01:45

标签: java

所以我正在尝试创建一个isValid方法来验证某个日期是否真实(即2016年3月31日有效,2/29/2001有效,因为它是闰年,2/30 / 2016年无效)

这是我的方法public boolean isValid()

`

{
   //January
    if (month == 1 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //February
    if (month == 2 && day <= 28) {
            return true;
    }
    else {
        if ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0)) {
            if (day == 29) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }
    }

    //March
    if (month == 3 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //April
    if (month == 4 && day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //May
    if (month == 5 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //June
    if (month == 6 && day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //July
    if (month == 7 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //August
    if (month == 8 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //September
    if (month == 9 && day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //October
    if (month == 10 && day <= 31) {
        return true;
    }
    else {
        return false;
    }

    //November
    if (month == 11 && day <= 30) {
        return true;
    }
    else {
        return false;
    }

    //December
    if (month == 12 && day <= 31) {
        return true;
    }
    else {
        return false;

    }

}

`

现在,当我编译时,它表示存在无法访问的语句,基本上就是“if”。有人可以帮忙吗?我已经尝试了'if(true){return}'方法,但我找不到任何有用的东西。

4 个答案:

答案 0 :(得分:3)

在你的第一个if语句中,无论结果如何都会返回,这意味着永远不会达到以下所有if语句,就好像你的第一个条件不符合它将会返回,如果是,它也会返回。

对此的修复是删除所有其他返回false路径并将else if if字符串中的所有if语句串起来,然后在结尾处返回false。

e.g。

if(){
    ...
}else if(){
    ...
}
return false;

答案 1 :(得分:0)

你的代码应该是elseif elseififif ... else ...

当你说if和else ..你的代码将以if或者其他结束..以后其他如果语句无法访问...

这是你得到的错误......将其他条件改为elseif

答案 2 :(得分:0)

您的代码永远不会转到第二个if语句,因为第一个(1月份)的其他部分将终止您的程序

您的代码必须如下:

if(month == 1)
{
   if(day <= 31)
      return true;
   else
      return false;
}
if(month==2)
{
  ----
  ----
}

答案 3 :(得分:0)

return **statement should be last statement of any method**

否则你可以使用变量代替直接返回语句,如

public boolean isValid()
{
 boolean status=false;
       if(condition)
          {
              status=true;
          }
    return status;
}