我一直在努力實現騎士的巡視問題,並且在我的代碼中遇到了一個小問題。Switch語句不會默認
我的問題是我的switch語句。我很困惑,爲什麼在經歷了所有可能的舉措之後,並沒有更多的工作,它不會像我想要的那樣違約。相反,它會打印出最終的棋盤,但會保持正常運行,因此我必須取消構建。
任何幫助將不勝感激!
我的目標是讓它顯示「沒有更多可能的舉措」。而不是在其他地方無法移動時永遠運行。
下面是一個輸出示例:它停在53左下角。
1 0 41 34 3 38 23 36
42 33 2 39 44 35 46 21
7 40 43 4 19 22 37 24
32 11 6 0 26 45 20 47
0 8 0 18 5 16 25 0
10 31 12 51 14 27 48 0
53 0 9 30 17 50 15 28
0 0 52 13 0 29 0 49
BUILD STOPPED (total time: 0 seconds)
這是我的開關代碼:
public class MoveKnight extends Moves {
public int[][] moveTheKnight() {
Moves switchBetweenMoves = new Moves();
switchBetweenMoves.startingLocation();
while (knight != 64) {
int randomMove = 1 + new Random().nextInt(8);
switch (randomMove) {
case 1:
switchBetweenMoves.firstMoveChoice();
break;
case 2:
switchBetweenMoves.secondMoveChoice();
break;
case 3:
switchBetweenMoves.thirdMoveChoice();
break;
case 4:
switchBetweenMoves.forthMoveChoice();
break;
case 5:
switchBetweenMoves.fifthMoveChoice();
break;
case 6:
switchBetweenMoves.sixthMoveChoice();
break;
case 7:
switchBetweenMoves.seventhMoveChoice();
break;
case 8:
switchBetweenMoves.eighthMoveChoice();
break;
default:
System.out.println("No more possible moves.");
break;
}
}
return board;
}
}
就會去默認情況下'randomMove'不是'1'和'8'(含)之間。我在代碼中沒有看到任何可以防止出現這種情況的東西 – 2014-11-05 19:11:08
問題仍然不清楚---你是否想讓switch語句中的'default'運行?如果問題是這樣的,那麼這是不可能的... – 2014-11-05 19:11:12
而不是[反覆提問這些問題](http://stackoverflow.com/questions/26762449/knights-tour-random-move-picker-not-working) ,請查看關於[控制流程語句](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html)的官方教程以及['Random'](http:/ /docs.oracle.com/javase/7/docs/api/java/util/Random.html)。請參閱[本文](http://meta.stackoverflow.com/a/261593/616460)以獲取更多關於在發佈之前應該執行的操作的信息。 – 2014-11-06 04:16:07