先将文件拖到项目的根目录下
创建一个主函数
public class Main {
public static void main(String[] args) {
//根据文件名创建迷宫数据对象
AlgoVisualizer maze = new AlgoVisualizer("maze_101_101.txt");
}
}
创建一个MazeData类
public class MazeData {
public static final char ROAD = ’ ';//定义路为空格
public static final char WALL = ‘#’;//定义墙为#
private int N; //定义成成员变量以便再次进行访问,外界间接访问
private int M;
private char[][] maze;//构建好迷宫数组
public boolean[][] visited; //定义一个记录访问状态数组
public boolean[][] path; //定义一个路径数组
private int entranceX , entranceY;//定义迷宫入口
private int exitX , exitY; //定义迷宫出口
public MazeData(String filename) { //传入文件名
if(filename == null) { //先判空
throw new IllegalArgumentException("文件名为空");//为空时抛出异常
}
//根据文件名创建该文件对象
File file = new File(filename); //创建该文件对象
Scanner input = null; //先默认初始化为空
if(!file.exists())
throw new IllegalArgumentException("文件不存在");
//调用FileInputStream时可能会出错,所以用+++try-catch
try { //开始读取文件
FileInputStream fis = new FileInputStream(file); //创建该文件对象
input = new Scanner(fis); //接收该文件
String nmline = input.nextLine();//读取文件内容的第一行
String[] nm = nmline.split(" "); //将第一行的内容进行划分
N = Integer.parseInt(nm[0]); //定义好迷宫的宽
M = Integer.parseInt(nm[1]);
maze = new char[N][M]; //设置好迷宫大小
visited=new boolean[N][M];//设置访问数组
path=new boolean[N][M]; //设置路径数组
for (int i = 0; i < N; i++) { //嵌套循环对文本内容进行判断并读取到数组中
String line = input.nextLine(); //将每一行的内容读取到line字符串中
if(line.length() !=