Java中的“switch”语句是否仅适用于整数?
我不能写这样的东西吗?
开关(字符串) 案例“你好”:......
感谢
答案 0 :(得分:7)
此答案仅对Java 6或更早版本有效! Java 7中添加了打开字符串
Expression的类型必须是char,byte,short,int,Character,Byte,Short,Integer或枚举类型(第8.9节),否则会发生编译时错误。
通常,当您需要打开字符串值时,您通常可以通过使用char(因为字符串只能是一个字符长)或枚举来解决此限制。在你的情况下,enum看起来更有可能。
答案 1 :(得分:2)
是。直到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
答案 2 :(得分:1)
实际上,根据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);
}
}
}
答案 3 :(得分:0)
switch语句不能用于字符串。在错误列表....
“不要屏住呼吸”
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=1223179
虽然在查看了另一个答案中发布的即将发布的文档后,我认为JDK7中提供了此功能。
答案 4 :(得分:0)
Java的教程说它适用于原始类型(byte,short,char,int)以及字符串。见http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
答案 5 :(得分:0)
使用java 7,您可以使用带字符串的开关。看here