以下代碼塊應該檢查用戶輸入的座標是否爲船的座標。該船位於(1,1)和(1,2)的二維陣列上。使用Java創建戰艦時的麻煩
當我用while循環包圍了getUserGuess
方法實現時,問題就開始了。循環檢查船是否仍然存在,並將繼續要求用戶輸入座標,直到船沉沒。但是,只要用戶輸入任意一對正確的座標,整艘船就會沉沒。
我不知道爲什麼這種情況持續發生。只要我註釋掉循環,問題就會停止,但循環是必要的。
這裏是方法:
public void checkResult(String userGuess) {
while (frigateIsAlive == true) {
if (userGuess.equalsIgnoreCase(board[1][1])){
System.out.println("hit!");
numOfHitsOnFrigate++;
board[1][1] = " *";
createBoard();
}
if (userGuess.equalsIgnoreCase(board[1][2])) {
System.out.println("hit!");
numOfHitsOnFrigate++;
board[1][2] = " *";
createBoard();
}
else if (numOfHitsOnFrigate == 2) {
System.out.println("Enemy frigate has been sunk!");
frigateIsAlive = false;
break;
}
else {
System.out.println("miss!");
// try again
}
}
}
public String getUserGuess()
{ // takes the users guess
System.out.println("Choose a coordinate on the board to fire at");
int x = input.nextInt();
int y = input.nextInt();
String userGuess = board[x][y];
return userGuess;
}
讓我知道如果你需要看,以更好地幫助我的代碼的任何其他部分。
使用,而(frigateIsAlive)來代替,而(frigateIsAlive ==真) – 2014-10-22 05:30:44
我相信別的東西使它裏面去numOfHitsOnFrigate可以打印出numOfHitsonFrigate'的'的值,以確保它是正確遞增的 – KRUKUSA 2014-10-22 05:32:14
邏輯是有缺陷的,你在這裏不需要'while',假設'userGuess'對board'[1] [1]有好處',如果你進入循環,你只在第一個'if'進行2次後離開它,很確定這不是你想要的。 – 2014-10-22 05:33:39