我是@Java编程的新手。我一直在为SaveFile工作,为我的游戏。加载和保存数据。我有两个错误:
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Clicker.LoadFile.<init>(LoadFile.java:17)
at Clicker.mainClass.main(mainClass.java:21)
java.lang.NullPointerException
at Clicker.SaveFile.<init>(SaveFile.java:17)
at Clicker.mainClass$1.run(mainClass.java:26)
at java.lang.Thread.run(Unknown Source)
我有MainClass,我把它放在SaveClass和LoadClass中:
package Clicker;
导入javax.swing.JFrame;
public class mainClass {
public static void main(String[] args) {
ClickerGame game = new ClickerGame();
JFrame frame = new JFrame("CarCollectionarV1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.addComponentToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
frame.setResizable(true);
frame.setSize(1000, 700);
LoadFile load = new LoadFile();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
SaveFile save = new SaveFile();
}
}));
}
Full&#34; SaveClass&#34;代码:
package Clicker;
import java.io.*;
public class SaveFile{
ClickerGame CG = new ClickerGame();{
try{
File SaveFile = new File("SaveFile.sav");
if(!SaveFile.exists()) {
SaveFile.createNewFile();
}
FileOutputStream saveFileSub = new FileOutputStream(SaveFile);
ObjectOutputStream save = new ObjectOutputStream(saveFileSub);
save.writeObject(CG.CarMain.Money);
save.writeObject(CG.CarMain.MoneyClicks);
save.writeObject(CG.CarMain.Boxes);
save.writeObject(CG.CarMain.BoxesClicks);
save.writeObject(CG.CarMain.PlayerLevel);
save.writeObject(CG.CarMain.BoxLevel);
save.close();
}
catch(Exception exc){
exc.printStackTrace();
}
}
}
Full&#34; LoadClass&#34;代码:
package Clicker;
import java.io.*;
public class LoadFile {
ClickerGame CG =new ClickerGame();{
try{
File SaveFile = new File("SaveFile.sav");
if(!SaveFile.exists()) {
SaveFile.createNewFile();
}
FileInputStream SaveFileSub = new FileInputStream(SaveFile);
ObjectInputStream load = new ObjectInputStream(SaveFileSub);
CG.CarMain.Money = (int) load.readObject();
CG.CarMain.MoneyClicks = (int) load.readObject();
CG.CarMain.Boxes = (int) load.readObject();
CG.CarMain.BoxesClicks = (int) load.readObject();
CG.CarMain.PlayerLevel = (int) load.readObject();
CG.CarMain.BoxLevel = (int) load.readObject();
load.close();
}
catch(Exception exc){
exc.printStackTrace();
}
}
答案 0 :(得分:0)
从我收集的内容中,CG.CarMain.Money
在SaveFile
的上下文中调用时未定义,导致NullPointerException
和文件写入的中止。从那时起,您有一个LoadClass
尝试阅读的损坏文件,只会引发EOFException
。