Hi
I have a simple java program that simulates 2 players playing tic tac toe.
the error I get is: when run the program reads the first entry and print the grid and then stops. it does not take any other entries. can't find the error. Help is much appreciated.
// This program reads will allow two players to play a TicTacToe on a grid 3x3 by choosing a single number a time. // each player is allowed one entry at a time. import java.util.Scanner; public class ticTacToe { private static char [][] grid = {{'1','2','3'},{'4','5','6'},{'7','8','9'}}; public static void main ( String args[] ) { boolean winner = false; boolean p1 = true; int row = 0; int col = 0; intro(); printGrid(); do { int[] location = getInput(); row = location[0]; col = location[1]; placeMarker(p1, row, col); printGrid(); p1 = !p1; } while ( checkWin() == false || boardFull() != false ); } public static void intro() { System.out.println ( "\nWelcome to ticTacToe v1.0!\n\nThis program simulates 2 players playing on a 3x3 grid. Each\nplayer will choose a number between 1 and 9 and hit enter to occupy a spot.\n\nThe player who succeeds in placing three respective marks in a horizontal, vertical, or diagonal row wins the game.\n" ); } public static void printGrid() { for ( int r = 0; r < grid.length; r++ ) { if ( r == 1 ) { System.out.print ( " ---------\n" ); } else if ( r == 2 ) { System.out.print ( " ---------\n" ); } for ( int c = 0; c < grid[r].length; c++ ) { System.out.printf ( "%2c", grid[r][c] ); if ( c == 0 ) { System.out.print ( " |" ); } else if ( c == 1 ) { System.out.print ( " |" ); } } System.out.println(); } } public static int [] getInput() { int [] location = new int [2]; Scanner bo = new Scanner ( System.in ); System.out.print ( "Please enter a number between 1 and 9: " ); char number = bo.next().charAt(0); boolean found = false; do { while ( number < '1' || number > '9' ) { System.out.print ( "This is invalid entry.\nPlease enter a number between 1 and 9: " ); number = bo.next().charAt(0); } for ( int r = 0; r < grid.length; r++ ) { for ( int c = 0; c < grid.length; c ++ ) { if ( number == grid[r][c] ) { location[0] = r; location[1] = c; found = true; } } } if (found == false) { System.out.print ( "This is invalid entry.\nPlease enter a number between 1 and 9: " ); number = bo.next().charAt(0); } } while (found == false); return location; } public static void placeMarker( boolean p1, int r, int c ) { if ( p1 == true ) grid[r][c] = 'x'; else grid[r][c] = 'o'; } public static boolean checkWin() { boolean winner = false; do { if (((grid[0][0] == grid[0][1]) && (grid[0][1] == grid[0][2])) || ((grid[1][0] == grid[1][1]) && (grid[1][1] == grid[1][2])) || ((grid[2][0] == grid[2][1]) && (grid[2][1] == grid[2][2])) || ((grid[0][0] == grid[1][1]) && (grid[1][1] == grid[2][2])) || ((grid[0][2] == grid[1][1]) && (grid[1][1] == grid[2][0])) || ((grid[0][0] == grid[1][0]) && (grid[1][0] == grid[2][0])) || ((grid[0][1] == grid[1][1]) && (grid[1][1] == grid[2][1])) || ((grid[0][2] == grid[1][2]) && (grid[1][2] == grid[2][2]))) winner = true; } while ( winner == false ); if ( winner == true ) { System.out.print ( "\nCongratulations you won!\n" ); } return winner; } public static boolean boardFull() { for ( int r = 0; r < grid.length; r++ ) { for ( int c = 0; c < grid.length; c ++ ) { if ( grid[r][c] > '0' && grid[r][c] <= '9' ) { return false; } } } return true; } }