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
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