A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZilchBloom 中级黑马   /  2014-8-13 11:22  /  1458 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造的函数中有if(条件1){
switch(所有条件1的情况都包含且都return ,但没写default )
}else { 有return}
这种情况为什么编译不成功。
public ststic string a(int a){
   if (a<=7&&a>=1){
       switch (a){
             case  1:
              return  "星期一";
                   ……
            
              case  7:
              return  "星期日"
        }
   }else{
      return "错误";
  }


}

如上无编译,而将else及其后面带的一对大括号去掉又能编译
,不懂求解
好像编译时看了if后不看else,然后直接看后面

6 个回复

倒序浏览
本帖最后由 嘿~~ 于 2014-8-13 11:45 编辑
  1. class  DateDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(method(8));
  6.         }
  7.         public static String method(int a)//这里方法有返回值为String
  8.         {
  9.                 String week = null;
  10.            if (a<=7&&a>=1)
  11.                 {
  12.                    switch (a){
  13.                                  case  1:
  14.                                           week = "星期一";
  15.                                          break;   //别忘了写break;如果该case成立,就不在往下判断     
  16.                                                    
  17.                                   case  2:
  18.                                                  week = "星期二";
  19.                                                   break;
  20.                                    case  3:
  21.                                                 week =  "星期三";
  22.                                                   break;
  23.                                     case  4:
  24.                                                 week ="星期四";
  25.                                                   break;
  26.                                          case  5:
  27.                                                  week = "星期五";
  28.                                                   break;
  29.                                 case  6:
  30.                                           week = "星期六";
  31.                                                   break;
  32.                                   case  7:
  33.                                          week = "星期日";
  34.                                           break;
  35.                                 
  36.                         }
  37.                         return week;//if语句应该在此处写上返回值
  38.            }
  39.            else{
  40.                   return "错误";
  41.           }
  42.         }
  43. }
  44. 看看这个,你写的第一句就错了public ststic string a(int a)这个是什么啊,静态是static,返回类型应该是String不是string,方法名怎么是个a,
复制代码
回复 使用道具 举报
大括号只是作用域的问题,加上大括号作用域就是大括号内,不加的话就是下面第一句话
回复 使用道具 举报
  1. class  ifElseDemo{
  2.           
  3.           public static String ifElse(int a){
  4.                 if (a<=7&&a>=1){
  5.                    switch (a){
  6.                           case  1:
  7.                           return  "星期一";
  8.                           case  2:
  9.                           return  "星期二";
  10.                           case  3:
  11.                           return  "星期三";
  12.                           case  4:
  13.                           return  "星期四";
  14.                           case  5:
  15.                           return  "星期五";
  16.                           case  6:
  17.                           return  "星期六";
  18.                           case  7:
  19.                           return  "星期日";
  20.             }
  21.             }else{
  22.                     return "错误";
  23.        
  24.             }
  25.           }


  26.         public static void main(String[] args) {
  27.                
  28.                 System.out.println(ifElse(8));
  29.         }
  30. }
复制代码

那是我写的问题,这个吧,如果没有else{}但保留return编译成功,如上则不行,我知道执行的时候是会去看else的,编译的时候没去看else吗
回复 使用道具 举报
少了个return语句
回复 使用道具 举报
ZilchBloom 发表于 2014-8-13 18:13
那是我写的问题,这个吧,如果没有else{}但保留return编译成功,如上则不行,我知道执行的时候是会去看e ...

if语句中那么多return干嘛,符合switch的语法规范吗
回复 使用道具 举报
嘿~~ 发表于 2014-8-13 21:12
if语句中那么多return干嘛,符合switch的语法规范吗

你也可以用个不用switch的试下,也一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马