Hej, tworzę grę TicTacToe, w której sprawdza każdy indeks pod kątem wartości „x” lub „o” i wyświetla mi błąd java.lang.ArrayIndexOutOfBoundsException: 3 dla pierwszej instrukcji if. Jakieś wskazówki, jak zasugerować, dlaczego tak się dzieje?
public boolean checkRowsForWin(int usrBrd, int WinSeq) {
int countX = 0;
int countO = 0;
for(int i = 0; i < usrBrd; i++) {
for(int j = 0; i< usrBrd; j++) {
if(board[i][j] == 'x') {
countX++;
}
else if(board[i][j] == 'o') {
countO++;
}
else {
countX = 0;
countO = 0;
}
if (countX >= WinSeq) {
return true;
}
else if (countO >= WinSeq) {
return true;
}
}
}
return false;
}
Oto gdzie inicjalizuję płytkę
Scanner scnr = new Scanner (System.in);
System.out.println("Tic-Tac-Toe!");
System.out.println("How large would you like the board?(Must be greater
than 3)");
int usrBrd = scnr.nextInt();
if(usrBrd < 3) {
System.out.println("Not a valid number, please try again");
usrBrd = scnr.nextInt();
}
TicTacToe game = new TicTacToe(usrBrd);
game.initializeBoard(usrBrd);
System.out.println("What should the win sequence be? Write in form of
amount i.e \"3\" ");
int winSeq = scnr.nextInt();
Oto metoda inicjalizacji płytki
public TicTacToe(int usrBrd) {
board = new char[usrBrd][usrBrd];
currentPlayerMark = 'x';
initializeBoard(usrBrd);
}
public void initializeBoard(int usrBrd) {
//loop rows
for (int i = 0; i < usrBrd; i++) {
//loop columns
for(int j = 0; j < usrBrd; j++) {
board[i][j] = '-';
}
}
}
1 odpowiedź
Twój błąd jest w Twojej drugiej pętli for
for(int j = 0; i< usrBrd; j++)
Zawsze sprawdzasz, czy i
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].
board[i][j]
?