一次切换给出三个结果的案例

时间:2018-11-27 10:01:17

标签: java switch-statement

所以我有这段代码:

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");
    }
}

它返回:

嗨 再见

这是为什么。我错过了什么吗?

3 个答案:

答案 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;
     }