读取由字符组成的迷宫文件,并写入数组(java)

时间:2016-02-07 07:24:03

标签: java arrays file maze

我有一个程序试图从文件中读取字符并将它们输入到数组中。我仍然试图在java中尝试掌握数组。

    // Read the file describing the maze.
static void readMazeFile(String mazefile) throws FileNotFoundException {
    File themaze = new File(mazefile);
    Scanner text_reader = new Scanner(themaze);
    int height = text_reader.nextInt();
    int width = text_reader.nextInt();
    char[][] amaze = new char[((2 * height) + 1)][];
    for (int r = 0; r < height; r++) {
        for (int c = 0; c < width; c++) {
            char pos = text_reader.next().charAt(0);
            System.out.print(pos);
            amaze[r][c] = pos;

        }

    }

}

// Solve the maze.
static boolean solveMaze() {
    return true;
}
}

这就是我正在使用的代码,输入效果很好所以我不相信它,因为我花了很多时间来实现它。我试图从Stack Overflow中获取两个for循环,但似乎我的问题来自于惊奇[r] [c] = pos;线。

+Exception in thread "main" java.lang.NullPointerException
    at MazeSolver.readMazeFile(MazeSolver.java:81)
    at MazeSolver.main(MazeSolver.java:29)

我得到的错误。我老实说,我不知道从哪里开始。文本文件如下所示:

2 3
+-+-+-+
|S|   |
+ + + +
|   |E|
+-+-+-+

它完美地读取了前两行,所以这些都是照顾的。我只需要帮助让循环读取每一行,并在读完所有行后更改行。一旦我需要记住的是我们有6个迷宫,并不是所有都是完美的正方形/矩形,例如我给出的那个。

正确的方向上的一点很棒,谢谢大家。

Main()代码:

    public static void main(String[] args) throws FileNotFoundException {
    if (handleArguments(args)) {
        mazefile = args[0];

        readMazeFile(mazefile);
        char[][] maze = new char[3][];
        maze[0] = new char[] { '+', '-', '+' };
        maze[1] = new char[] { '|', 'S', '|' };
        maze[2] = new char[] { '+', '-', '+' };
        DrawMaze.draw(height, width, maze, borderwidth, cellsize, sleeptime);

        if (solveMaze())
            System.out.println("Solved!");
        else
            System.out.println("Maze has no solution.");
    }
}

1 个答案:

答案 0 :(得分:0)

我认为,问题是缺少第二维尺寸。

第一路

//static declaration 

char[][] amaze = new char[((2 * height) + 1)][1];

第二路

//dynamic decalaration of second dimension

char[][] amaze = new char[((2 * height) + 1)][];
amaze[r]=new char[1];
amaze[r][c] = pos;

请参阅jaggedArray