An else...if not working....
For some reason, for this TicTacToe assignment I've been working on, the if...else statement checking for a tie game isn't working. This is the code I have for it.
Fuctional class:
publicclass TicTacToe
{
publicchar[] gameBoard;
privateint numMarkedSquares = 0;
publicvoid setNumMarkedSquares()
{
numMarkedSquares = numMarkedSquares++;
}
publicvoid init()
{
gameBoard =newchar[9];
for(int x = 0; x < gameBoard.length; x++)
{
gameBoard[x] =' ';
}
}
publicvoid setSquare(int squareNumber,char insert)
{
if (gameBoard[squareNumber] !=' ')
{
System.out.println("Square already marked--lose turn");
return;
}
gameBoard[squareNumber] = insert;
}
publicvoid display()
{
System.out.println(" "+ gameBoard[0] +" | "+ gameBoard[1] +" | "+ gameBoard[2]);
System.out.println("||");
System.out.println(" "+ gameBoard[3] +" | "+ gameBoard[4] +" | "+ gameBoard[5]);
System.out.println("||");
System.out.println("||");
System.out.println(" "+ gameBoard[6] +" | "+ gameBoard[7] +" | "+ gameBoard[8]);
}
publicvoid checkWin(char playerOne,char playerTwo)
{
if(((gameBoard[0] == playerOne)&&(gameBoard[1] == playerOne)&&(gameBoard[2] == playerOne)) ^ ((gameBoard[3] == playerOne)&&
(gameBoard[4] == playerOne)&&(gameBoard[5] == playerOne)) ^ ((gameBoard[6] == playerOne)&&(gameBoard[7] == playerOne)&&
(gameBoard[8] == playerOne)) ^ ((gameBoard[0] == playerOne)&&(gameBoard[3] == playerOne)&&(gameBoard[6] == playerOne)) ^
((gameBoard[1] == playerOne)&&(gameBoard[4] == playerOne)&&(gameBoard[7] == playerOne)) ^ ((gameBoard[2] == playerOne)&&
(gameBoard[5] == playerOne)&&(gameBoard[8] == playerOne)) ^ ((gameBoard[0] == playerOne)&&(gameBoard[4] == playerOne)&&
(gameBoard[8] == playerOne)) ^ ((gameBoard[2] == playerOne)&&(gameBoard[4] == playerOne)&&(gameBoard[6] == playerOne)))
{
System.out.println("Congratulations "+ playerOne +", you won!");
System.exit(0);
}
else
{
if(((gameBoard[0] == playerTwo)&&(gameBoard[1] == playerTwo)&&(gameBoard[2] == playerTwo)) ^ ((gameBoard[3] == playerTwo)&&
(gameBoard[4] == playerTwo)&&(gameBoard[5] == playerTwo)) ^ ((gameBoard[6] == playerTwo)&&(gameBoard[7] == playerTwo)&&
(gameBoard[8] == playerTwo)) ^ ((gameBoard[0] == playerTwo)&&(gameBoard[3] == playerTwo)&&(gameBoard[6] == playerTwo)) ^
((gameBoard[1] == playerTwo)&&(gameBoard[4] == playerTwo)&&(gameBoard[7] == playerTwo)) ^ ((gameBoard[2] == playerTwo)&&
(gameBoard[5] == playerTwo)&&(gameBoard[8] == playerTwo)) ^ ((gameBoard[0] == playerTwo)&&(gameBoard[4] == playerTwo)&&
(gameBoard[8] == playerTwo)) ^ ((gameBoard[2] == playerTwo)&&(gameBoard[4] == playerTwo)&&(gameBoard[6] == playerTwo)))
{
System.out.println("Congratulations "+ playerTwo +", you won!");
System.exit(0);
}
else
{
if(numMarkedSquares == 9)
{
System.out.println("Tie game!");
System.exit(0);
}
}
}
}
}
Test class:
publicclass TicTacToeTest
{
publicstaticvoid main(String[] args)
{
char playerOne ='X';
char playerTwo ='O';
TicTacToe ticTac =new TicTacToe();
System.out.println("Squares are numbered from 0-8 from left to right.");
ticTac.init();
ticTac.display();
do
{
int thePlayerOne;
int thePlayerTwo;
do
{
System.out.print("Player 1, choose a square: ");
thePlayerOne = MyInput.readInt();
}
while((thePlayerOne > 8)||(thePlayerOne < 0));
{
ticTac.setSquare(thePlayerOne, playerOne);
ticTac.display();
ticTac.setNumMarkedSquares();
ticTac.checkWin(playerOne, playerTwo);
}
do
{
System.out.print("Player 2, choose a square: ");
thePlayerTwo = MyInput.readInt();
}
while((thePlayerTwo > 8)||(thePlayerTwo < 0));
{
ticTac.setSquare(thePlayerTwo, playerTwo);
ticTac.display();
ticTac.setNumMarkedSquares();
ticTac.checkWin(playerOne, playerTwo);
}
}
while(playerOne =='X');
}
}

