Java 初学者:Switch 语句没有给出预期的输出

Java beginner: Switch statement does not give expected output

    char suit = 'S';
    int n = 2;


    for (int k= 0; k<4; k++){
    for (int i = 0; i < n; i++){

        switch (k) {
        case 0: suit = 'S';
        case 1: suit = 'H';
        case 2: suit = 'D';
        case 3: suit = 'C';
        }

这是作业中的代码摘录。

根据调试器,

Suit 在 switch 语句后设置为 'C',并且在整个双循环中它永远不会改变。我对 switch 语句有什么误解?

switch (k) {
        case 0: 
          suit = 'S'; 
          break;
        case 1: 
          suit = 'H';
          break;
        case 2: 
          suit = 'D';
          break;
        case 3: 
          suit = 'C';
          break;
        default:
          break;
        }

如果没有 break;,您将进入每个案例块,直到到达第一个 break

您需要在每个块的末尾添加一个 break 语句,如下所示:

switch (k) {
        case 0: 
          suit = 'S'; 
          break;
        case 1: 
          suit = 'H';
          break;
        case 2: 
          suit = 'D';
          break;
        case 3: 
          suit = 'C';
          break;
        default:
          break;
        }

如果您不使用 break 语句结束一个块,您的切换将继续到下一个块并执行该代码(如果大小写有效)。

可以找到可能需要此行为的用法 here