Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m writing a tic tac toe program and my set() method isn\'t working properly.

ID: 3669561 • Letter: I

Question

I'm writing a tic tac toe program and my set() method isn't working properly. the instructions for the method were:
All values for x and y in the range 0..size()-1 should be legal for set.
when I run a test for my method however i'm getting a java.lang.NullPointerException, here is what I have written:

public void set(int x, int y, char ch) {   
if(x <= size-1 && y <= size-1 && x >= 0 && y >= 0) {
board[x][y] = ch;
}
else
throw new IndexOutOfBoundsException();   
}

Explanation / Answer

package com.javadb.tictactoe;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main
{
public void play()
{

TicTacToe game = new TicTacToe();

System.out.println("Welcome! Tic Tac Toe is a two player game.");
System.out.print("Enter player one's name: ");
game.setPlayer1(game.getPrompt());
System.out.print("Enter player two's name: ");
game.setPlayer2(game.getPrompt());
boolean markerOk = false;
while (!markerOk) {
System.out.print("Select any letter as " + game.getPlayer1() + "'s marker: ");
String marker = game.getPrompt();
if (marker.length() == 1 &&
Character.isLetter(marker.toCharArray()[0])) {
markerOk = true;
game.setMarker1(marker.toCharArray()[0]);
} else
{
System.out.println("Invalid marker, try again");
}
}
markerOk = false;
while (!markerOk) {
System.out.print("Select any letter as " + game.getPlayer2() + "'s marker: ");
String marker = game.getPrompt();
if (marker.length() == 1 &&
Character.isLetter(marker.toCharArray()[0]))
{
markerOk = true;
game.setMarker2(marker.toCharArray()[0]);
}
else
{
System.out.println("Invalid marker, try again");
}
}

boolean continuePlaying = true;

while (continuePlaying)
{

game.init();
System.out.println();
System.out.println(game.getRules());
System.out.println();
System.out.println(game.drawBoard());
System.out.println();

String player = null;
while (!game.winner() && game.getPlays() < 9)
{
player = game.getCurrentPlayer() == 1 ? game.getPlayer1() : game.getPlayer2();
boolean validPick = false;
while (!validPick) {
System.out.print("It is " + player + "'s turn. Pick a square: ");
String square = game.getPrompt();
if (square.length() == 1 && Character.isDigit(square.toCharArray()[0])) {
int pick = 0;
try
{
pick = Integer.parseInt(square);
}
catch (NumberFormatException e)
{
an invalid pick on the next row.
}
validPick = game.placeMarker(pick);
}
if (!validPick)
{
System.out.println("Square can not be selected. Retry");
}
}
game.switchPlayers();
System.out.println();
System.out.println(game.drawBoard());
System.out.println();
}
if (game.winner())
{
System.out.println("Game Over - " + player + " WINS!!!");
}
else
{
System.out.println("Game Over - Draw");
}
System.out.println();
System.out.print("Play again? (Y/N): ");
String choice = game.getPrompt();
if (!choice.equalsIgnoreCase("Y"))
{
continuePlaying = false;
}
}
}