代码之家  ›  专栏  ›  技术社区  ›  Hunter Simon

我无法打印包含对象和类的数组网格?带Java的Netbeans

  •  1
  • Hunter Simon  · 技术社区  · 8 年前

    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();
    

    }

    我这里还有一个对象:

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

    以及带有迷宫/网格构造函数的类。

    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

    注意:在控制台中运行之前,不会发生任何错误。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Wreigh    8 年前

    你的 String maze[][] null

    static Maze maze = new Maze(null,0,0,0,0); // notice that 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);
    
    推荐文章