这是我用来从文件加载保存的游戏数据的方法。因为这个原因,我在某个时候得到了一个名为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
}
答案 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++){
请注意<
而不是<=