第一个方法明明已经把数据add到arr里面去了,然后再写入文件里的,再第二个方法里为什么读出来的ArrayList里面没有对象
异常java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
报错代码:红颜色的那条代码
???
public static Player regNum() throws FileNotFoundException, IOException,
ClassNotFoundException {
ArrayList arr;
String id ;
String code;
String name;
Player pla;
File f;
FileInputStream fis;
ObjectInputStream ois;
FileOutputStream fos;
ObjectOutputStream oos;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入账号");
id = sc.next();
try {
int x = Integer.parseInt(id);
break;
} catch (NumberFormatException e) {
System.out.println("类型不匹配,请重新输入");
}
}
System.out.println("请输入密码");
code = sc.next();
System.out.println("请输入昵称");
name = sc.next();
pla = new Player(id, code, name);
f = new File("G:\\1.dat");
fos = new FileOutputStream(f);
oos = new ObjectOutputStream(fos);
fis = new FileInputStream(f);
ois = new ObjectInputStream(fis);
arr = new ArrayList();
oos.writeObject(arr);
arr = (ArrayList) ois.readObject();
arr.add(pla);
System.out.println(arr.get(0).toString());
oos.writeObject(arr);
if (oos != null)
oos.close();
if (fos != null)
fos.close();
if (ois != null)
ois.close();
if (fis != null)
fis.close();
System.out.println("创建成功,开始游戏");
return pla;
}
public static Player LogNum() throws FileNotFoundException, IOException,
ClassNotFoundException {
ArrayList arr;
String id;
String code;
Player pla;
File f;
FileInputStream fis;
ObjectInputStream ois;
Scanner sc = new Scanner(System.in);
pla=new Player();
f = new File("G:\\1.dat");
fis = new FileInputStream(f);
ois = new ObjectInputStream(fis);
arr = (ArrayList) ois.readObject();
pla=(Player) arr.get(0);
pla.toString();
while (true){
System.out.println("请输入账号");
id = sc.next();
System.out.println("请输入密码");
code = sc.next();
Player p = new Player(id, code);
if (arr.contains(p)) {
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i).equals(p)) {
pla = p;
break;
}
}
break;
} else
System.out.println("您输入的账号或者密码不正确" + ",请重新输入!");
}
System.out.println("登入成功,即将开始游戏");
if (ois != null)
ois.close();
if (fis != null)
fis.close();
return pla;
}