奇妙な問題が発生しています。ケースステートメントがありますが、まったく入力されていません。私はそれを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;
デフォルトの場合に問題が発生していますか?それらなしで試してみて、同じ結果になったからではないと思います。
長いコードと質問でごめんなさい。ガイダンスをありがとう。