//class public class TicTacToe { private String [][] board; private static final int ROWS=3; private static final int COLUMNS = 3; public TicTacToe() { board = new String[ROWS][COLUMNS]; //write code to fill in board with space } public void set (int i, int j, String player) { //sets x or o if (board[i][j].equals("")) board[i][j] = player; } public String findWinner () { //x if (((board[1][1] == "X") && (board[1][2] == "X") && (board[1][3] == "X"))) return ("Player1 Wins!"); else if (((board[2][1] == "X") && (board[2][2] == "X") && (board[2][3] == "X"))) return ("Player1 Wins!"); else if (((board[3][1] == "X") && (board[3][2] == "X") && (board[3][3] == "X"))) return ("Player1 Wins!"); //side else if (((board[1][1] == "X") && (board [1][2] == "X") && (board [1][3] == "X"))) return ("Player1 Wins!"); else if (((board[2][1] == "X") && (board [2][2] == "X") && (board [2][3] == "X"))) return ("Player1 Wins!"); else if (((board[3][1] == "X") && (board [3][2] == "X") && (board [3][3] == "X"))) return ("Player1 Wins!"); //down else if (((board[1][1] == "X") && (board [2][2] == "X") && (board [3][3] == "X"))) return ("Player1 Wins!"); else if (((board[1][3] == "X") && (board [2][2] == "X") && (board [1][3] == "X"))) return ("Player1 Wins!"); //slant //o if (((board[1][1] == "O") && (board[1][2] == "O") && (board[1][3] == "O"))) return ("Player2 Wins!"); else if (((board[2][1] == "O") && (board[2][2] == "O") && (board[2][3] == "O"))) return ("Player2 Wins!"); else if (((board[3][1] == "O") && (board[3][2] == "O") && (board[3][3] == "O"))) return ("Player2 Wins!"); //side else if (((board[1][1] == "O") && (board [1][2] == "O") && (board [1][3] == "O"))) return ("Player2 Wins!"); else if (((board[2][1] == "O") && (board [2][2] == "O") && (board [2][3] == "O"))) return ("Player2 Wins!"); else if (((board[3][1] == "O") && (board [3][2] == "O") && (board [3][3] == "O"))) return ("Player2 Wins!"); //down else if (((board[1][1] == "O") && (board [2][2] == "O") && (board [3][3] == "O"))) return ("Player2 Wins!"); else if (((board[1][3] == "O") && (board [2][2] == "O") && (board [1][3] == "O"))) return ("Player2 Wins!"); //slant //tie else return ("Tie"); } public String toString() {//creates a string representation of the board String r = ""; for (int i = 0; i<ROWS; i++) { r = r+ "|"; for (int j=0; j<COLUMNS; j++) r = r + board[i][j]; r = r + "|\n"; } return r; } }
//drive import java.util.*; public class ticDrive { public static void main (String[] args) { Scanner scan = new Scanner (System.in); String nameA, nameB; TicTacToe a = new TicTacToe(); int row,col; System.out.print("Enter name of player1:"); nameA=scan.next(); System.out.print("Enter name of player2:"); nameB=scan.next(); System.out.println(nameA+ " = X"); System.out.println(nameB+ " = O\n"); for (int i = 0; i<5; i++) { System.out.print ("Player 1 enter the row then column that you would like to place an X "); row = scan.nextInt(); col = scan.nextInt(); a.set (row, col, "X"); System.out.println (a.toString()); } for (int i = 0; i<4; i++) { System.out.print ("Player 1 enter the row then column that you would like to place an X"); row = scan.nextInt(); col = scan.nextInt(); a.set (row, col, "O"); System.out.println (a.toString()); } System.out.println ("Final Board\n\n"); System.out.println (a.toString()); System.out.println ("Winner: " + a.findWinner()); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at TicTacToe.set(TicTacToe.java:21)
at ticDrive.main(ticDrive.java:28)
my code probably doesn't even work, and I don't even know whats wrong with my array that it's getting this error please help

public class ticDrive { public static void main (String[] args) { Scanner scan = new Scanner (System.in); String nameA, nameB; TicTacToe a = new TicTacToe(); int row,col; System.out.print("Enter name of player1:"); nameA=scan.next(); System.out.print("Enter name of player2:"); nameB=scan.next(); System.out.println(nameA+ " = X"); System.out.println(nameB+ " = O\n"); for (int i = 0; i<5; i++) { System.out.print ("Player 1 enter the row then column that you would like to place an X "); row = scan.nextInt(); col = scan.nextInt(); a.set (row, col, "X"); System.out.println (a.toString()); } for (int i = 0; i<4; i++) { System.out.print ("Player 1 enter the row then column that you would like to place an X"); row = scan.nextInt(); col = scan.nextInt(); a.set (row, col, "O"); System.out.println (a.toString()); } System.out.println ("Final Board\n\n"); System.out.println (a.toString()); System.out.println ("Winner: " + a.findWinner()); } }
public class TicTacToe { private String [][] board; private static final int ROWS=3; private static final int COLUMNS = 3; public TicTacToe() { board = new String[ROWS][COLUMNS]; //write code to fill in board with space } public void set (int i, int j, String player) { //sets x or o if (board[i][j].equals("")) board[i][j] = player; } public String findWinner () { //x if (((board[1][1] == "X") && (board[1][2] == "X") && (board[1][3] == "X"))) return ("Player1 Wins!"); else if (((board[2][1] == "X") && (board[2][2] == "X") && (board[2][3] == "X"))) return ("Player1 Wins!"); else if (((board[3][1] == "X") && (board[3][2] == "X") && (board[3][3] == "X"))) return ("Player1 Wins!"); //side else if (((board[1][1] == "X") && (board [1][2] == "X") && (board [1][3] == "X"))) return ("Player1 Wins!"); else if (((board[2][1] == "X") && (board [2][2] == "X") && (board [2][3] == "X"))) return ("Player1 Wins!"); else if (((board[3][1] == "X") && (board [3][2] == "X") && (board [3][3] == "X"))) return ("Player1 Wins!"); //down else if (((board[1][1] == "X") && (board [2][2] == "X") && (board [3][3] == "X"))) return ("Player1 Wins!"); else if (((board[1][3] == "X") && (board [2][2] == "X") && (board [1][3] == "X"))) return ("Player1 Wins!"); //slant //o if (((board[1][1] == "O") && (board[1][2] == "O") && (board[1][3] == "O"))) return ("Player2 Wins!"); else if (((board[2][1] == "O") && (board[2][2] == "O") && (board[2][3] == "O"))) return ("Player2 Wins!"); else if (((board[3][1] == "O") && (board[3][2] == "O") && (board[3][3] == "O"))) return ("Player2 Wins!"); //side else if (((board[1][1] == "O") && (board [1][2] == "O") && (board [1][3] == "O"))) return ("Player2 Wins!"); else if (((board[2][1] == "O") && (board [2][2] == "O") && (board [2][3] == "O"))) return ("Player2 Wins!"); else if (((board[3][1] == "O") && (board [3][2] == "O") && (board [3][3] == "O"))) return ("Player2 Wins!"); //down else if (((board[1][1] == "O") && (board [2][2] == "O") && (board [3][3] == "O"))) return ("Player2 Wins!"); else if (((board[1][3] == "O") && (board [2][2] == "O") && (board [1][3] == "O"))) return ("Player2 Wins!"); //slant //tie else return ("Tie"); } public String toString() {//creates a string representation of the board String r = ""; for (int i = 0; i<ROWS; i++) { r = r+ "|"; for (int j=0; j<COLUMNS; j++) r = r + board[i][j]; r = r + "|\n"; } return r; } }