2017-09-30 12 views
1

私はスキャナーで決められた量でグリッドを作っています。私は間違いを続けていると私はなぜ分からない。私が作ろうとしているグリッドのコードを以下に示します。また、私は下の迷路/グリッドのオブジェクトとクラスも含めます。オブジェクトとクラスで配列グリッドを印刷できませんか? Netbeans with Java

static Maze maze = new Maze(null,0,0,0,0); 

と迷路/グリッドのconstrutorsを持つクラス:私もここにオブジェクトを持って

public static void mazeSetup() {           
    System.out.println("How many rows and columns do you want? I would\n" 
        + "suggest 10 minimum and 20 maximum."); 
    boolean mazeselect = true; 
    while(mazeselect) { 
    maze.columns = sc.nextInt(); 
    maze.rows = maze.columns; 
    if (maze.rows > 30 || maze.rows < 10) { 
     System.out.println("Make sure that you make it within 10-30 rows."); 
    } else { 
     mazeselect = false; 
    } 
    } 
    mazeBuild(); 
} 

public static void mazeBuild() { 
    for(int x = 0; x < maze.rows; x++) { 
     for(int y = 0; y < maze.columns; y++) { 
      maze.maze[x][y]= "."; 
      System.out.print(maze.maze[x][y]); 
    } 
     System.out.println(); 
} 
characterPlacement(); 

}。

public class Maze { 

    String maze[][]; 
    int rows; 
    int columns; 
    int xStart; 
    int yStart; 

public Maze(String xMaze[][], int xRows, int xColumns, int xxStart, int xyStart) {  
     maze = xMaze; 
     rows = xRows; 
     columns = xColumns; 
     xStart = xxStart; 
     yStart = xyStart; 
    } 
    public String[][] maze() { 
     return maze; 
    } 
    public int rows() { 
     return rows; 
    } 
    public int columns() { 
     return columns; 
    } 
    public int xStart() { 
     return xStart; 
    } 
    public int yStart() { 
     return yStart; 
    } 

}

任意の助けを大幅に高く評価されるだろう。どうもありがとう! :D

注:コンソールで実行するまでエラーは発生しません。

static Maze maze = new Maze(null,0,0,0,0); // notice that null 

そして、あなたはmazeBuild()を呼び出すときに、それに値を入れしようとしている:あなたのString maze[][]

答えて

1

は、このためのnullです。 nullの代わりに初期化または配列を渡す必要があります。あなたはまた、私が追加したコードの行に交換でこれを行うことができますmazeBuild()

public static void mazeBuild() { 
    maze.maze = new String[maze.rows][maze.columns]; // <-- this one! 

    for(int x = 0; x < maze.rows; x++) { // <-- this loop tries to 
     for(int y = 0; y < maze.columns; y++) { // put values in your 
      maze.maze[x][y]= ".";    // maze.maze (2D String array) 
      System.out.print(maze.maze[x][y]); 
    } 
    System.out.println(); 
} 

の開始時にこれを行うことができます。

String[][] mazeArray = new String[maze.rows][maze.columns]; 
maze = new Maze(mazeArray, maze.rows, maze.columns, 0, 0); 
+0

ありがとうございました。問題を解決しました。 :) –

+0

あなたは大歓迎です:) – Wreigh

+0

ねえ、もう一つ質問があります。オブジェクトがある場合、int、string [] []が必要であると言いますが、文字列をパラメータの中に入れる方法は? –

関連する問題