我正在为我正在尝试完成的程序撞墙。我确定答案很简单,但我就是想不出解决方案。
当我写入 csv 文件时它可以工作,但是从它读取时,如果 csv 文件中有 3 个以上的对象,我会收到 ArrayIndex 错误,但三个或更少,它不会引发错误。
以下是我写入文件的代码:
无效 saveDataToFile() {
String op = "";
try {
FileWriter fw = new FileWriter(filename);
for (int i =0 ; i< library.length ; i++)
if(library[i]!=null)
fw.write(library[i].getDetailsCSV().toString()+"\n");
fw.write(op.toString());
fw.close();
}
catch(Exception e) {
System.out.println("ERROR : "+e);
}
System.out.println("saveDataToFile()");
}
下面是读取文件的代码:
无效加载数据从文件(){
try{
File fi = new File(filename);
FileReader fr = new FileReader(fi);
char[] buffer = new char[(int)fi.length()];
fr.read(buffer);
fr.close();
String all = new String(buffer);
String[] ip = all.split("\n");
for (int i=0; i<ip.length; i++){
String[] op = ip[i].split(",");
String author = op[0];
String title = op[1];
int isbn = Integer.parseInt(op[2]);
String s = op[3];
boolean h = Boolean.parseBoolean(op[3]);
for(int j=0; j<op.length; j++){
if(author.equals("Dickens"))
library[i] = new title(author,isbn);
else if(author.equals("Lumas"))
library[i] = new title(author,isbn,s);
else if(author.equals("Orwell"))
library[i] = new title(author,isbn,h);
}
}
}
catch(Exception e) {
System.out.println("ERROR : "+e);
}
System.out.println("loadDataFromFile()");
}
library[] 数组的大小为 10。我尝试了 System.out.println(op.length); 和 System.out.println(ip.length); 从 read 方法和 ip.length 是 10 和 op.length 是 3 (不管有多少对象实际保存到 csv 文件,即即使它已满)。
如果有人能看到我明显遗漏的东西,我将不胜感激!