java.lang.NullPointerException +从文件读取并写入结构

时间:2017-12-07 21:04:31

标签: java file data-structures

旧问题多次搜索但我仍然不明白我做错了什么xD,这是我的代码: `

package dev.codenmore.tilegame.worlds;

import dev.codenmore.tilegame.Utils;
import dev.codenmore.tilegame.objects.Objects;

import java.awt.*;



public class World {

public class Object {

    private int id = 0,
                x = 0,
                y = 0;
    public Object(){

    }

    public void setId(int id) {
        this.id = id;
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }
}

private int width, height;
private int spawnX, spawnY;
private int x, y, id, nr = 0;
private Object[] objects;

public World(String path){
    loadWorld(path);
}

public void tick(){

}

public void render(Graphics g){
    int i = 0;
    for(; i <(width*height)/3; i++){
        getObject(i).render(g, objects[i].x, objects[i].y);

    }
}

public Objects getObject(int i){
    Objects o = Objects.objects[objects[i].id];
    if(o == null)
        return Objects.alpha;
    return o;
}

private void loadWorld(String path){
    String file = Utils.loadFileAsString(path);
    String[] tokens = file.split("\\s+");
    width = Utils.parseInt(tokens[0]);
    height = Utils.parseInt(tokens[1]);
    spawnX = Utils.parseInt(tokens[2]);
    spawnY = Utils.parseInt(tokens[3]);
    objects = new Object[width*height/3];

    for(int i = 4; i < width*height+3; i += 3){
        id = Utils.parseInt(tokens[i]);
        x = Utils.parseInt(tokens[i+1]);
        y = Utils.parseInt(tokens[i+2]);

        objects[nr].setId(id);
        objects[nr].setX(x);
        objects[nr].setY(y);
        nr++;
    }

}

}

` 当我试图将数据写入我的结构时,错误发生在第64行,这告诉我正在尝试写入空内存,但我不知道如何自己处理这个。除此之外我还有第二个问题,这是最好的方法吗?我的意思是读取文件并将数据写入结构这里是我的文件:

6 3
960 540
0 0 0 255 0 0
2 0 500 2 1620 500
1 0 790 255 0 0

1 个答案:

答案 0 :(得分:0)

嗯,不是因为它中的id,x,y是私有的,你在这个类中没有setter?因此,您无法访问这些字段。 我尝试在Object类中添加setter,然后使用objects[nr].id = id;而不是objects[nr].setId(id);