我正在创建一个从文件文件中读取迷宫的函数,其中包含迷宫的大小 [row],[col],[Entrypoint_row],[EntryPoint_Col],[ExitPoint_row],[ExitPoint_Col] 然后迷宫数据
/用于存储入口点和出口点
int EntryPoints[]=new int[2];
int ExitPoints[]=new int[2];
try
{
String line="";
FileReader fr=new FileReader("maze.txt");
BufferedReader br=new BufferedReader(fr);
从arr获取数据到声明的变量
line=br.readLine();
String arr[]=line.split(" ");
row=Integer.parseInt(arr[0]);
col=Integer.parseInt(arr[1]);
this.AllocateMaze(row, col); //allocating size of maze row and col from file
EntryPoints[0]=Integer.parseInt(arr[2]);
EntryPoints[1]=Integer.parseInt(arr[3]);
ExitPoints[0]=Integer.parseInt(arr[4]);
ExitPoints[1]=Integer.parseInt(arr[5]);
System.out.println("row :"+row+"col :"+col);
System.out.println("exit points :"+EntryPoints[0]+" : "+EntryPoints[1]);
System.out.println("exit points :"+ExitPoints[0]+" : "+ExitPoints[1]);
int i=0,k=0;
boolean flag=true;
用char
填充文件char中的数据的迷宫[] [] while(!(line=br.readLine()).equals(null))
{
k=0;
for(int j=0;j<row;j++)
{
这里我在i = 8时遇到了数组outof bound异常,j = 8为什么我找不到处理它的方法需要帮助
maze[i][j]=String.valueOf(line.charAt(k));//here
k++;
}
i++;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:1)
您是否在退出点上添加了一些空间? 根据我的理解,lineOutOfBound异常更可能由line.charAt(k)引发,在这种情况下,'k'大约为9,并且该行长度为9个字符,因此您得到此异常。 您可能需要该行正好为10个字符,因此,您应该添加空格或特定字符,例如“x”。
答案 1 :(得分:0)
你在哪里发起maze[][]
?
列和行是10,从文件中读取,这也是数组的大小?
因为如果它像你说的那样在8处引发异常,那么它似乎有点短。
答案 2 :(得分:0)
更改
while(!(line=br.readLine()).equals(null))
到
while((line=br.readLine()) != null)
和
for(int j=0;j<row;j++)
到
for(int j=0;j<col;j++)