[英]Checking if the space is empty or occupied in double ArrayList
在我的井字游戲程序中,有三行三列。 游戲將由兩個人玩。
該程序將通過鍵入單元格坐標來通過Scanner類(System.in)獲取用戶輸入。 我想防止用戶輸入已經填充的坐標。 我認為通過使用兩個(嵌套的)“ for循環”來實現此目的可能是一個好主意,該循環將檢查行和列是否已被填充。
因此,在第一次檢查時,將占用一個插槽,如果用戶輸入的坐標與上一個相同,則我可以向用戶顯示一條消息,指出該插槽不為空。
但是問題在於,當這兩個嵌套的for循環再次運行時(因為我將它們放入了while循環中,在播放器之間切換的代碼位於該while循環中),它將開始再次檢查Array表中的每個單元。 然后,程序將告訴我,即使第二個用戶沒有輸入與第二個相同的坐標,該插槽也已被填充。
我希望代碼的行為方式如下:在用戶輸入該單元格的坐標之后,它僅檢查表中的特定單元格。
我失敗的方法isOccupied()看起來像這樣-
public boolean isOccupied() {
for (int r = 0; r < 3; r++) {
for (int c = 0; c < 3; c++) {
if (board.get(r).get(c) != null) {
return false;
}
}
}
return true;
}
下面是我的while循環;
while (scanner.hasNext() && !board.hasWon()){
int x = scanner.nextInt();
int y = scanner.nextInt();
if (player){
System.out.println("Player 2. Please enter your coordinate:");
board.setPiece(x, y, "x");
if (board.hasWon()){
System.out.println(board);
System.out.println("Player 1 has won!");
break;
}
else{
player = false;
}
}else {
board.setPiece(x, y, "o");
if (board.hasWon()){
System.out.println(board);
System.out.println("Player 2 has won!");
break;
}else{
player = true;
}
System.out.println("Player 1. Please enter your coordinate:");
}
System.out.println(board);
}
}
有沒有更好的方法來實現此邏輯?
public boolean isOccupied(int x, int y){
return (board.get(x).get(y) != null);
return true;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.