所以我有这段代码:
void go() {
String x = "Hi";
switch (x) {
case "Hi":
System.out.println("Hi");
}
}
然后返回:嗨
但是当我跑步
void go() {
String x = "Hi";
switch (x) {
case "Hi":
System.out.println("Hi");
case "Bye":
System.out.println("Bye");
}
}
它返回:
嗨 再见
这是为什么。我错过了什么吗?
答案 0 :(得分:2)
如前所述,如果要停止在该特殊语句上,则必须为每个break;
添加case
条语句。您的代码将如下所示:
void go() {
String x = "Hi";
switch (x) {
case "Hi":
System.out.println("Hi");
break;
case "Bye":
System.out.println("Bye");
break;
}
}
您真正应该做的另一件事是为所有不匹配的输入添加一个default
大小写(假设有人输入"Hy"
而不是"Hi"
,那么将没有任何输出。 ..):
void go() {
String x = "Hi";
switch (x) {
case "Hi":
System.out.println("Hi");
break;
case "Bye":
System.out.println("Bye");
break;
default:
System.out.println("Your input was \"" + x
+ "\", please enter either \"Hi\" or \"Bye\" instead!");
}
}
default
语句是case
语句中未处理的所有内容的选项。
现在回到break
...如果仅将中断设置为某些case
,则可以处理相同的case
:
void go() {
String x = "Hi";
switch (x) {
case "Hi":
case "Hy":
System.out.println("Hi");
break;
case "Bye":
case "By":
System.out.println("Bye");
break;
default:
System.out.println("Your input was \"" + x
+ "\", please enter either \"Hi\", \"Hy\", \"By\" or \"Bye\" instead!");
}
}
这样做,您将收到"Hi"
和"Hy"
的相同输出,而无需重复处理两个case
的代码。
答案 1 :(得分:1)
您应该在localMerchantsForDelete_size = 0
语句的末尾放置一些break
语句,否则执行将传播到下一个case
语句。即使反直观,有时也很有用。
case
此处switch(int n) {
case 1: System.out.println("Hello");
case 2: System.out.println("World");
}
将显示:
switch(1)
然后Hello
World
将显示:
switch(2)
但使用World
条语句:
break
此处switch(int n) {
case 1:
System.out.println("Hello");
break;
case 2:
System.out.println("World");
break;
}
将显示:
switch(1)
然后Hello
将显示:
switch(2)
答案 2 :(得分:0)
在switch语句中,您必须在每种情况的结尾处写中断。 如果您不写中断,那么它将打印所有情况。
switch(value)
{
case X:
//do something
break;
case Y:
//do something
break;
default:
//do something
break;
}