我遇到了一个奇怪的问题。我有一个案例陈述,根本没有被输入。我已经用 Eclipse 调试器逐步完成了它,它得到了上面的行,然后直接进入后面的行。它编译并运行没有错误。
这是一个总体大纲:
for (int k = 0; k<9; k++) {
System.out.println("Program is here - #1");
doSomething();
switch (switchcode) {
case 1:
switch (k) {
case 1: case 2: case 3:
doOneOneTwoThree(); //#2
break;
case 4: case 5: case 6:
doOneFourFiveSix(); //#3
break;
default:
System.err.println("error k defaulted in case 1");
break;
}
break;
case 2:
switch (k) {
case 1: case 2: case 3:
doTwoOneTwoThree(); //#4
break;
case 4: case 5: case 6:
doTwoFourFiveSix(); //#5
break;
default:
System.err.println("error k defaulted in case 2");
break;
}
break;
default:
System.err.println("error switchcode defaulted");
break;
}
doSomethingElse();
}
毫无疑问,我做错了什么,但我真的不知道到底是什么。是因为我在一个案例中打开了 k 吗?我以前做过,而且很成功,也许幸运的是。
在更大的 for 循环中嵌套 case 语句是否会导致问题?
我在四处研究时偶尔看到“分支预测失败”,我不知道那是什么,但它可能正在发生。
在默认情况下是否break;
会导致问题?我不认为这是因为我在没有他们的情况下尝试过并且得到了相同的结果。
对不起,长代码和问题。感谢您的任何指导。