因此,我试图将信息保存到对象数组列表中,但是一切正常,但是,每当我尝试加载以前保存的数组列表时,我都会收到堆栈溢出错误。
我猜我需要某种计数器,但是,我不熟悉Java以及反序列化器的工作方式。我已经在下面附加了我的代码-任何帮助将不胜感激。
ArrayList<Car> cars = new ArrayList<Car>();
public void addCar
{
System.out.println("What is the make of the car?");
String newMake = scan.next();
System.out.println("What is the model of the car?");
String newModel = scan.next();
System.out.println("What year was the car produced?");
String newYear = scan.next();
System.out.println("How far has this car traveled?");
String newOdometer = scan.next();
cars.add(new Car(newMake,newModel,newYear,newOdometer));
}
public void openFile()
{
Car cars = new Car();
try {
FileInputStream fileIn = new FileInputStream("testSave.plzwork");
ObjectInputStream in = new ObjectInputStream(fileIn);
try {
cars = (Car)in.readObject();
} catch (ClassnotFoundException ex) {
Logger.getLogger(carClass.class.getName()).log(Level.SEVERE,null,ex);
}
in.close();
fileIn.close();
}
catch (IOException i) {
i.printStackTrace();
}
}
编辑 这是序列化代码
public void saveFile()
{
try
{
FileOutputStream fileOut = new FileOutputStream("testSave.plzwork");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(cars);
out.close();
fileOut.close();
System.out.println("Serialized data is saved");
}
catch (IOException i) {
i.printStackTrace();
}
}
编辑2 这是汽车课
public Car(String year,String odometer,String make,String model)
{
this.make = make;
this.model = model;
this.year = year;
this.odometer = odometer;
}
这是Netbeans吐出来的错误
线程“主”中的异常java.lang.StackOverflowError 在java.base / java.lang.AbstractStringBuilder.setLength(AbstractStringBuilder.java:277) 在java.base / java.lang.StringBuffer.setLength(StringBuffer.java:233) 在java.base / java.text.DecimalFormat.expandAffix(DecimalFormat.java:2978) 在java.base / java.text.DecimalFormat.expandAffixes(DecimalFormat.java:2946) 在java.base / java.text.DecimalFormat.applyPattern(DecimalFormat.java:3632) 在java.base / java.text.DecimalFormat。(DecimalFormat.java:466) 在java.base / sun.util.locale.provider.NumberFormatProviderImpl.getInstance(NumberFormatProviderImpl.java:187) 在java.base / sun.util.locale.provider.NumberFormatProviderImpl.getNumberInstance(NumberFormatProviderImpl.java:151) 在java.base / java.text.NumberFormat.getInstance(NumberFormat.java:969) 在java.base / java.text.NumberFormat.getInstance(NumberFormat.java:953) 在java.base / java.text.NumberFormat.getNumberInstance(NumberFormat.java:518) 在java.base / java.util.Scanner.useLocale(Scanner.java:1270) 在java.base / java.util.Scanner。(Scanner.java:543) 在java.base / java.util.Scanner。(Scanner.java:566) 在pkg30000969carsarraylist.Car。(Car.java:29) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46) 在pkg30000969carsarraylist.Car。(Car.java:46)