gpt4 book ai didi

java - InputStreams 出现奇怪的空指针异常

转载 作者:行者123 更新时间:2023-11-30 05:04:15 24 4
gpt4 key购买 nike

嘿伙计们,我正在计算机科学课上完成一个期末项目。这将是一个非常简单的航空公司系统实时模拟。我刚刚开始,所以其中大部分仍然是占位符代码,并且它仍然没有注释并且很糟糕,所以不要太严厉,但是我收到了一个非常奇怪的空指针异常错误。我已将调试行添加到输出中,以便您可以看到它的发生。

您现在就可以获取源代码 here .

基本上,类 fileManager() 递归地循环遍历文件夹并查找所有 .ini 并将它们放入链接列表中。然后,renderingArea() 的构造函数根据 .ini 的 # 及其默认值填充 city[]。当我尝试将文件plane.ini 的位置作为InputStream 传递给类plane() 的构造函数时,出现空指针异常错误。有人可以帮忙吗?

class renderingArea extends JPanel {

public fileManager files;
public city[] cities;

public renderingArea(){

// ... other code

for( loop through all files in fileManager ){
File current = files.ini.get(i);
if(current.getName().contains("city")){
try{
InputStream cityStream = files.getResource(current.getName());
InputStream planeStream = files.getResource("plane.ini");
cities[index] = new city( cityStream, planeStream);
cityStream.close();
planeStream.close();
index++;
} catch (Exception e) {
e.printStackTrace();
}
}
}
for( city current : cities){
current.setCities(cities);
}
}

// ============== Class City ========================

public class city {
private final String[] keys = {"x","y","name","population","planes_in_hanger"};

public float x;
public float y;
public int population;
public String name;
private Queue<passenger>[] waiting_passengers; // queue[] parallel to cities.
private Queue<plane> planes_in_hanger; // a queue is a first in first out ADT. Standard ops apply
private city[] cities;

private IniReader ini;

public city(InputStream inStream, InputStream inStreamPlane) throws IOException, FileNotFoundException {
System.out.println("city: " + inStream.toString());
System.out.println("plane: " + inStreamPlane.toString());

ini = new IniReader();
ini.load(inStream);

// .... Other Code

if(ini.properties.containsKey("planes_in_hanger")){
try{
for( int i = 0; i < Integer.parseInt(ini.properties.getProperty("planes_in_hanger")); i++){
System.out.println("iter: "+i);
System.out.println("plane: "+inStreamPlane.toString());
planes_in_hanger.enqueue(new plane(inStreamPlane));
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}

public class plane {
private final String[] keys = {"x","y","max_velocity","passengers"};

public float x;
public float y;
public float max_velocity;
private float x_velocity;
private float y_velocity;
public city destination;
private passenger[] passengers;
public int max_passengers;

private IniReader ini;

//====================== CLASS PLANE ======================

public plane(InputStream inStream) throws IOException, FileNotFoundException{
ini = new IniReader();
ini.load(inStream);

//rest doesn't matter
}

输出:

//调试东西,切到异常

java.lang.NullPointerException    at city.(city.java:72)    at renderingArea.(flight_optimizer.java:70)    at flight_optimizer_GUI.(flight_optimizer.java:103)    at flight_optimizer.main(flight_optimizer.java:37)Exception in thread "main" java.lang.NullPointerException    at renderingArea.(flight_optimizer.java:80)    at flight_optimizer_GUI.(flight_optimizer.java:103)    at flight_optimizer.main(flight_optimizer.java:37)

最佳答案

您似乎没有在任何地方初始化新的planes_in_hanger,但您在顶部声明了它。这可能是你的问题?

private Queue<plane> planes_in_hanger = new Queue<plane>();

或者您可以在该方法中初始化它。

关于java - InputStreams 出现奇怪的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com