Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载平铺映射时出现Java索引越界异常_Java_Save_Loading_Multidimensional Array_Indexoutofboundsexception - Fatal编程技术网

加载平铺映射时出现Java索引越界异常

加载平铺映射时出现Java索引越界异常,java,save,loading,multidimensional-array,indexoutofboundsexception,Java,Save,Loading,Multidimensional Array,Indexoutofboundsexception,在我用来帮助我创建新游戏的工具中,我需要能够加载和保存平铺地图并编辑它们。当我点击鼠标时,它会将鼠标悬停的当前磁贴更改为我选择的磁贴。出于某种原因,每当我点击任何一个磁贴时,第一个磁贴总是会变为一些奇怪的黑色,并引发索引越界异常。它表示线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException中的异常:1 位于Engine.Map.LoadUpdateMap(Map.java:161) 在Engine.Pane.mousePresse

在我用来帮助我创建新游戏的工具中,我需要能够加载和保存平铺地图并编辑它们。当我点击鼠标时,它会将鼠标悬停的当前磁贴更改为我选择的磁贴。出于某种原因,每当我点击任何一个磁贴时,第一个磁贴总是会变为一些奇怪的黑色,并引发索引越界异常。它表示线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException中的异常:1 位于Engine.Map.LoadUpdateMap(Map.java:161) 在Engine.Pane.mousePressed(Pane.java:65)。我检查了文本文件,它被替换为当前的磁贴大小(当它应该为0时)。代码发布在下面,有什么想法吗

这就是发生错误的地方(Map.java) 用于保存地图的代码
public void saveToLocation(){
试一试{
如果(文件名==null){
fileName=“default”;
}
FileOutputStream fout=新的FileOutputStream(新文件(System.getProperty(“user.dir”),fileName+“.txt”);
System.out.println(“文件保存到:”+新文件(System.getProperty(“user.dir”)、fileName+“.txt”);
write(String.valueOf(tileSize.getBytes());
write(System.getProperty(“line.separator”).getBytes();
write(String.valueOf(mapWidth.getBytes());
write(System.getProperty(“line.separator”).getBytes();
write(String.valueOf(mapHeight.getBytes());
write(System.getProperty(“line.separator”).getBytes();
对于(int i=0;i
在单击任何内容之前

第一次点击后

文本文件将显示结果

您的
阵列有多大

 String[] skips = read.split(" ");
根据您的代码,它是
mapWidth
,然后您试图从数组中提取那么多元素

也许吧

for (int j = 0; j < skips.length; j++){
for(int j=0;j

更正确的是

到目前为止,您尝试了什么?您是否逐行调试了代码,以查看值与预期值的变化情况?
public void saveToLocation(){
    try{
        if (fileName == null){
            fileName = "default";
        }
        FileOutputStream fout = new FileOutputStream(new File(System.getProperty("user.dir"), fileName + ".txt"));
        System.out.println("File was saved to: " + new File(System.getProperty("user.dir"), fileName + ".txt"));
        fout.write(String.valueOf(tileSize).getBytes());
        fout.write(System.getProperty("line.separator").getBytes());
        fout.write(String.valueOf(mapWidth).getBytes());
        fout.write(System.getProperty("line.separator").getBytes());
        fout.write(String.valueOf(mapHeight).getBytes());
        fout.write(System.getProperty("line.separator").getBytes());

        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                fout.write(String.valueOf(map[i][j]).getBytes());
                fout.write(String.valueOf(" ").getBytes());
            }
            fout.write(System.getProperty("line.separator").getBytes());
        }
        fout.close();
    }catch (Exception e){
        e.printStackTrace();
    }

}
 String[] skips = read.split(" ");
for (int j = 0; j < skips.length; j++){