在java中将数据从文本文件填充到char数组

时间:2016-10-25 09:06:04

标签: java arrays char file-handling

我正在创建一个从文件文件中读取迷宫的函数,其中包含迷宫的大小 [row],[col],[Entrypoint_row],[EntryPoint_Col],[ExitPoint_row],[ExitPoint_Col] 然后迷宫数据

  • 当前文件的数据类似 1 enter image description here

    public void readMaze()抛出FileNotFoundException {

/用于存储入口点和出口点

    int EntryPoints[]=new int[2];
    int ExitPoints[]=new int[2];

    try
    {
        String line="";
        FileReader fr=new FileReader("maze.txt");
        BufferedReader br=new BufferedReader(fr);
  • 将数据作为字符串
  • 读入
  • 将字符串变量 line 拆分为char数组 arr
  • 从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();
    }
    

    }

3 个答案:

答案 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++)