我有一个程序试图从文件中读取字符并将它们输入到数组中。我仍然试图在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.");
}
}
答案 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