【问题标题】:Does the "switch" statement in Java only work with integers? [duplicate]Java中的“switch”语句是否仅适用于整数? [复制]
【发布时间】:2011-07-09 02:13:50
【问题描述】:

可能重复:
Switch Statement With Strings in Java?

Java 中的“switch”语句是否只适用于整数?

我不能写这样的东西吗?

开关(字符串) 案例“你好”:...

谢谢

【问题讨论】:

标签: java switch-statement


【解决方案1】:

switch 语句不能用于字符串。在错误列表下......

“不要屏住呼吸”

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=1223179

虽然在查看了另一个答案中发布的即将发布的文档之后,我想这个功能在 JDK7 中可用。

【讨论】:

    【解决方案2】:

    此答案仅适用于 Java 6 或更早版本!在 Java 7 中添加了打开字符串

    14.11 The switch Statement

    表达式的类型必须是 char、byte、short、int、Character、Byte、Short、Integer 或枚举类型(第 8.9 节),否则会发生编译时错误。

    通常,当您需要打开一个字符串值时,您通常可以通过使用 char(因为字符串永远只有一个字符长)或枚举来解决这个限制。在您的情况下,枚举看起来更有可能。

    【讨论】:

    • switch 确实适用于 Java SE 7 中的字符串
    • @Samit G 如果你问我这不是一个好主意,但它仍然只是 Java SE 7。
    【解决方案3】:

    Java 的教程说它适用于原始类型(byte、short、char、int)以及字符串。见http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

    【讨论】:

    • 本文档适用于 JDK7
    • 这将作为 Java 7 中的一个新特性引入。本教程带有警告,它正在更新,可能不再反映 Java 6 特性。在 Java 6 中,switch 语句中的 String 尚不可用。我以为它也被取消了 7,但显然不是这样。高兴!
    【解决方案4】:

    是的。直到 java 6,不是字符串。 很难,您可以使用 ENUMS 解决方法,例如:

    public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
        THURSDAY, FRIDAY, SATURDAY 
    }
    
    switch (day) {
            case MONDAY: System.out.println("Mondays are bad.");
                         break;
    
            case FRIDAY: System.out.println("Fridays are better.");
                         break;
    
            case SATURDAY:
            case SUNDAY: System.out.println("Weekends are best.");
                         break;
    
            default:     System.out.println("Midweek days are so-so.");
                         break;
        }
    

    对我们人类来说更容易阅读,对吧?

    来源是http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

    【讨论】:

      【解决方案5】:

      在 java 7 中,您可以将 switch 与字符串一起使用。看here

      【讨论】:

        【解决方案6】:

        实际上,根据 Java SE 7 中的 Oracle,您可以在 switch 语句中使用字符串

        http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

        public class StringSwitchDemo {
        
        public static int getMonthNumber(String month) {
        
            int monthNumber = 0;
        
            if (month == null) { return monthNumber; }
        
            switch (month.toLowerCase()) {
                case "january":    monthNumber =  1; break;
                case "february":   monthNumber =  2; break;
                case "march":      monthNumber =  3; break;
                case "april":      monthNumber =  4; break;
                case "may":        monthNumber =  5; break;
                case "june":       monthNumber =  6; break;
                case "july":       monthNumber =  7; break;
                case "august":     monthNumber =  8; break;
                case "september":  monthNumber =  9; break;
                case "october":    monthNumber = 10; break;
                case "november":   monthNumber = 11; break;
                case "december":   monthNumber = 12; break;
                default:           monthNumber =  0; break;
            }
        
            return monthNumber;
        }
        
        public static void main(String[] args) {
        
            String month = "August";
        
            int returnedMonthNumber =
              StringSwitchDemo.getMonthNumber(month);
        
            if (returnedMonthNumber == 0) {
              System.out.println("Invalid month");
            } else {
              System.out.println(returnedMonthNumber);
            }
        }
        

        }

        【讨论】:

          猜你喜欢
          • 2014-10-01
          • 2010-11-14
          • 1970-01-01
          • 2016-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-09
          相关资源
          最近更新 更多