Switch 的括号内容,只能 int,char,byte,long等类型怎样把我的 type 可以转换成 能支持 象以下 HA,SA两个字符的。switch (type) {
  case "HA":
  .....
  break;
  case "SA":
  ....
  break;
}

解决方案 »

  1.   

    转自http://forum.java.sun.com/class StringSwitch {
       public static void main(String [] arg) throws Exception {
          String name = new String("Ben");
     
          /*Approach #1*/
          if(name.equals("Ben")) System.out.println("1 - its ben");
          else if(name.equals("Arnold")) System.out.println("2 - its arnold");
          else if(name.equals("Ludwig")) System.out.println("3 - its ludwig");
          else if(name.equals("Kevin")) System.out.println("4 - its kevin");
          else System.out.println("Unknown");
     
          /* Approach #2 */
          switch(name.hashCode()) {
             case /*"Ben"*/ 66667: System.out.println("1 - its ben"); break;
             case /*"Arnold"*/ 196956338: System.out.println("2 - its arnold"); break;
             case /*Ludwig*/ -2008003046: System.out.println("3 - its ludwig"); break;
             case /*Kevin*/ 72389729: System.out.println("4 - its kevin"); break;
             default: System.out.println("Unknown");
          }
     
          /* Approach #3 */      
          String [] keys = new String [] {"Ben", "Arnold", "Ludwig", "Kevin"};
          
          switch(java.util.Arrays.asList(keys).indexOf(name)) {
             case /*"Ben"*/ 0: System.out.println("1 - its ben"); break;
             case /*"Arnold"*/ 1: System.out.println("2 - its arnold"); break;
             case /*Ludwig*/ 2: System.out.println("3 - its ludwig"); break;
             case /*Kevin*/ 3: System.out.println("4 - its kevin"); break;
             default: System.out.println("Unknown");
          }
       }
    }
      

  2.   

    楼上的 还有其他办法么 这样好麻烦 还没if else好用
      

  3.   

    当然有了,自己来一个hashmap就可以搞定了。
      

  4.   

    To:  yangtaylor(水无月烈火) 你可以帮我写一个 switch 类吗?