我有一个重大问题。我们可以将此应用程序称为“船俱乐部系统”,并在UML课程中进行分配。但是真正困扰我的问题是我无法将“成员”对象加载回导出和导入对象时使用的Arraylist。
我的朋友得到了一些帮助,但导入不起作用。 这是我尝试导入时遇到的错误。
Exception in thread "main" java.lang.NullPointerException
at boat.Controller.SystemController.readFromSystem(SystemController.java:288)
at boat.Controller.SystemController.<init>(SystemController.java:26)
at boat.View.Console.<init>(Console.java:17)
at BoatMain.main(BoatMain.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
这个特定的问题指出了问题:
member.setMemberId(Integer.parseInt(element.get(i).getAttribute("memberId").getValue()));
整个应用程序的链接。 https://github.com/mjuu/boat/tree/master/src
System控制器类看起来像这样。 顺便说一下,我正在考虑将这个类拆分为更像系统控制器和成员控制器,以实现更高的内聚/低耦合设计。但只有当我让导入工作正常时...
我不知道为什么它不起作用。成员id首先是INTEGER,但是在导出时它转换为String。导入时,它再次转换为Int。所以我想知道那里有什么问题......
非常感谢帮助,所以我可以继续。 系统控制器
public void readFromSystem () {
File file = null;
Builder builder = null;
Document doc = null;
try {
file = new File(filePath);
builder = new Builder();
doc = builder.build(file);
Element root = doc.getRootElement();
Elements members = root.getChildElements();
for (int i = 0; i < members.size(); i++) {
Elements element = members.get(i).getChildElements();
Member member = new Member();
member.setMemberId(Integer.parseInt(element.get(i).getAttribute("memberId").getValue()));
member.setPersonId(element.get(0).getValue());
member.setName(element.get(1).getValue());
memberList.add(member);
if (members.get(i).getChildElements().size() == 3) {
Elements boats = element.get(2).getChildElements();
for (int j = 0; j < boats.size(); j++) {
Boat b = new Boat();
b.setBoatId(Integer.parseInt(boats.get(j).getAttribute("boatId").getValue()));
b.setBoatType(Integer.parseInt(boats.get(j).getChildElements().get(1).getValue()));
b.setBoatLength(boats.get(j).getChildElements().get(2).getValue());
}
}
}
} catch (IOException e) {
System.out.print("Could not read from the system");
} catch (nu.xom.ParsingException e) {
System.out.print("Parsing was unsuccessful!");
}
}