我的负载数据方法有什么问题?

时间:2012-01-28 20:07:10

标签: java file-io java.util.scanner filereader

这是我用来从文件加载保存的游戏数据的方法。因为这个原因,我在某个时候得到了一个名为error15的东西。谷歌出现的唯一一件事就是与http有关,但这不可能是因为我没有做那样的事情。当对象将字符串打印到控制台时,它会完成第一行保存的数据,但不会继续读取其他数据。我有预感可能与我使用in.nextLine();有关(我还应该使用其他东西吗?)如果有人能告诉我我做错了什么我会永远爱你。

/**
 * Returns a 2-dimensional 15*15 array of saved world data from a file named by x and y coordinates
 */
public String[][] readChunkTerrain(int x, int y)
{
    String[][] data = new String[15][15]; //the array we will use to store the variables
    try {
        //initiate the scanner that will give us information about the file
        File chunk = new File( "World/" + x + "." + y + ".txt" );
        Scanner in = new Scanner(
                new BufferedReader(
                    new FileReader(chunk)));

        //go through the text file and save the strings for later
        for (int i=0; i<15; i++){
            for (int j=0; j<=15; j++){
                String next = in.next();
                data[i][j] = next;

                System.out.println(i + j + next); //temporary so I can see the output in console
                System.out.println();
            }
            in.nextLine();
        }

        in.close(); //close the scanner
    }
    //standard exception junk
    catch (Exception e)
    {System.err.println("Error" + e.getMessage());}

    return data; //send the array back to whoever requested it
}

1 个答案:

答案 0 :(得分:0)

你得到的错误15(你应该发布BTW,并且会立即回答)可能是ArrayIndexOutOfBoundsException,因为你试图在你的循环中访问data[i][15]不存在。

    for (int i=0; i<15; i++){
        for (int j=0; j<=15; j++){

j变量初始化为i时,应调整data循环以匹配new String[15][15]循环。所以将它转换为以下内容并且一切正常

        for (int j=0; j<15; j++){

请注意<而不是<=