1
私は私の第二のクラス(MazeSolver)とのトラブルを抱えているが行と私の最初のクラス(MazeInput)からcolsのの値を取得されていません。これはMazeSolverのdrawMaze()メソッドでArrayOutOfBoundsExceptionsとNullPointerExceptionsにつながります。私はこれらのエラーがなぜ起こっているのか理解しています。フィールドを他のクラスに渡す方法の理解が不足しているため、対処方法がわかりません。あなたは素敵な人たちが私が間違っているところを指摘してくれますか?ゲッター&セッター&全く混乱
public class LA2_MazeInput {
private int rows;
private int cols;
public LA2_MazeInput() {
this.rows = getNumRows();
this.cols = getNumCols(rows);
}
private int getNumRows() {
int rows = 0;
String input;
input = JOptionPane.showInputDialog(
"Please enter the number of rows (5-10) for the maze.");
rows = Integer.parseInt(input);
return rows;
}
private int getNumCols(int numRows) {
int cols = 0;
String input;
input = JOptionPane.showInputDialog(
"Please enter the number (5-10) of columns for the maze."
+ "\n(Value cannot be the same as the number of rows.)");
cols = Integer.parseInt(input);
return cols;
}
public void initializeMazeSolver(/*MazeSolver solver*/) {
LA2_MazeSolver ms = new LA2_MazeSolver();
ms.setNumRows(this.rows);
ms.setNumCols(this.cols);
}
}
public class LA2_MazeSolver {
private int rows;
private int cols;
private String[][] maze;
public LA2_MazeSolver() {
this.maze = new String[rows][cols];
}
public void setNumRows(int numRows) {
this.rows = numRows;
}
public void setNumCols(int numCols) {
this.cols = numCols;
}
public int getNumRows() {
return this.rows;
}
public int getNumCols() {
return this.cols;
}
public void drawMaze() {
Random r = new Random();
maze[0][0] = "S";
maze[rows - 1][cols - 1] = "D";
int limit = ((rows * cols)/3);
for (int i = r.nextInt(limit) + 1; i < limit; i++) {
maze[r.nextInt(rows - 1)][r.nextInt(cols - 1)] = "#";
}
for (int i = 0; i < maze.length; i++) {
for (int c = 0; c < maze[0].length; c++) {
if (!(maze[i][c].matches("#")) && !(maze[i][c].matches("S")) && !(maze[i][c].matches("D"))) {
maze[i][c] = Integer.toString(r.nextInt(100) + 1);
}
}
}
for (int i = 0; i < maze.length; i++) {
for (int c = 0; c < maze[0].length; c++) {
System.out.print(maze[i][c] + " ");
}
System.out.println();
}
}
}
のようにそれを初期化だろう、私はそのことについて考えたが、その時点で私もゲッターとセッターが必要でしょうか? –
@GregSmith限り、私はあなたがそれらを必要としないと言うことができます。 –
それは問題の半分です...私はコンストラクタでそれをしたいです。しかし、私はゲッターとセッターを持って、彼の "基本的なプログラムデザイン"に従う必要が私のプロとしてそれらを利用する必要があります。 getterやsetterでこれを行う方法はありますか? –