switch开关构造是否可以嵌套在(if-else)构造内,反之亦然?

时间:2011-06-26 15:24:30

标签: java

我编写了这段代码来计算有效的日期条目----并且在我试验过程中将switch语句嵌套在if语句中...在switch语句中...我进一步添加了if else语句。 ..

非常高兴..用它..直到我...好.. 编译 :(

它给出了50个错误..或者其他东西......那么这种类型的嵌套无效吗? 所有嵌套都有效吗?

代码如下

      public DateFour(int m,int d,int y){

      if (y<2011 && y>0){
          year=y;
          if{
              switch(m){
              case 1:case 3 case 5: case 7:case 8:case 10: case 12:
                 month=31;
                 if (day>0 && day<=31){
                 day=d;
                 System.out.println("The date today is:"+day"/"+month+"/"+year);
                  }
                  else{
                      System.out.println("invalid date");
                  }
                  break;
                 case 2:
                             month=28;
                              if (day>0 && day<=28){
                 day=d;
                 System.out.println("The date today is:"+day"/"+month+"/"+year);
                  }
                  else{
                      System.out.println("invalid date");
                  }
                             break;
                             case 4:
                             case 6:
                             case 9:
                             case 11:
                             month =30;
                              if (day>0 && day<=30){
                 day=d;
                 System.out.println("The date today is:"+day"/"+month+"/"+year);
                  }
                  else{
                      System.out.println("invalid date");
                  }
                             default:
                             System.out.println("Invalid month.");

                  }


      }
      }
      else{
          System.out.println("invalid input");

  }
  }

3 个答案:

答案 0 :(得分:2)

if {

这不是Java中的有效构造。 if什么?

case 1:case 3 case 5: case 7:case 8:case 10: case 12:

你错过了:。请始终使用间距。

+之后,day所有打印报表都缺失{。}}。

否则,是的,你可以嵌套切换和if。它变得非常非常快速(正如你刚才注意到的那样)。

答案 1 :(得分:1)

我相信其他人已经确定了你的所有语法错误,你也可能有一个逻辑错误设置month =(当月的最大天数),应该设置为m。您已经在下一个声明中捕获了无效日期。

答案 2 :(得分:0)

是嵌套开关,如果可能的话。由于你的progrm已经被调试,我建议你更好地分配你的编码,因为这将帮助你更容易地调试它。