Java でコンウェイのライフ ゲームを作成しようとしていますが、レンガの壁にぶつかったようです。「Cell」というクラスを作成しました。これは、セルが生きているか死んでいるかを本質的に決定するブール変数と、必要に応じてセルを殺すか作成するメソッドを保持します。メイン メソッドでは、ユーザーがゲームで必要とする行と列の数を取得し、それぞれ「場所」という名前の Cell オブジェクトの配列を作成しようとしています。コードを実行して各セルの初期値を出力しようとすると、null ポインター例外エラーが発生し、修正方法がわかりません。私の知る限り、各配列に null 値を設定することはできませんが、これは初めてのことです...
//Create a Cell class for the purpose of creating Cell objects.
public class Cell
{
private boolean cellState;
//Cell Constructor. Initializes every cell's state to dead.
public Cell()
{
cellState = false;
}
//This function kills a cell.
//Should be called using objectName[x][y].killCell.
public void killCell()
{
cellState = false;
}
//This function creates a cell.
//Should be called using objectName[x][y]createCell.
public void createCell()
{
cellState = true;
}
public void printCell()
{
if (cellState == true)
{
System.out.print("1");
}
else if
{
System.out.print("0");
}
}
//End Class Cell//
}
これは私の Cell クラスです。セルが生きている場合、その場所に 1 が出力されます。死んでいる場合は、その場所に 0 が入ります。
これが私の主な方法です。エラーは、Cell オブジェクトの配列を作成する行で発生しています。私はこれをすべて間違っていますか?
//GAME OF LIFE//
import java.util.Scanner;
import java.lang.*;
public class GameOfLife
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("\t\tWelcome to the Game of Life!");
System.out.println("\n\nDeveloped by Daniel Pikul");
System.out.print("\n\nHow many rows would you like your game to have?");
int numRows = scan.nextInt();
System.out.print("How many columns would you like your game to have?");
int numColumns = scan.nextInt();
//Create an array of cell objects.
Cell[][] location = new Cell[numColumns][numRows];
//This for loop will print out the cell array to the screen.//
for (int i = 0; i < numRows; i++)
{
for (int j = 0; j < numColumns; j++)
{
location[i][j].printCell();
}
System.out.print("\n");
}
//Prompt the user to enter the coordinates of cells that should live.
System.out.println("Input coordinates tocreate active cells.");
int xCo, yCo;
char userChoice;
//This do loop takes coordinates from the user. Every valid coordinate
//creates a living cell in that location.
do
{
System.out.print("Enter an x coordinate and a y coordinate: ");
xCo = scan.nextInt();
yCo = scan.nextInt();
location[xCo][yCo].createCell();
System.out.print("Enter another coordinate? (Y/N) ");
String tempString = scan.next();
userChoice = tempString.charAt(0);
}while(userChoice == 'Y');
//THIS IS AS FAR AS I HAVE GOTTEN IN THE PROGRAM THUS FAR//
}
}