我正在尝试读取数据文件并将不同的变量保存到数组列表中。
数据文件的格式看起来有点像这样
5003639MATH131410591
5003639CHEM434111644
5003639PSYC230110701
为了解决数据文件格式错误的问题,我向不同部分添加了逗号以进行拆分。创建的新文本文件看起来像这样
5,003639,MATH,1314,10591
5,003639,CHEM,4341,11644
5,003639,PSYC,2301,10701
创建该文件后,我尝试将信息保存到数组列表中。 以下是尝试执行此操作的片段。
FileReader reader3 = new FileReader("example.txt");
BufferedReader br3 = new BufferedReader(reader3);
while ((strLine = br3.readLine())!=null){
String[] splitOut = strLine.split(", ");
if (splitOut.length == 5)
list.add(new Class(splitOut[0], splitOut[1], splitOut[2], splitOut[3], splitOut[4]));
}
br3.close();
System.out.println(list.get(0));
以下是它尝试保存到的结构
public static class Class{
public final String recordCode;
public final String institutionCode;
public final String subject;
public final String courseNum;
public final String sectionNum;
public Class(String rc, String ic, String sub, String cn, String sn){
recordCode = rc;
institutionCode = ic;
subject = sub;
courseNum = cn;
sectionNum = sn;
}
}
最后,我想打印出其中一个变量以查看它是否正常工作,但它给了我一个 IndexOutOfBoundsException
。我想知道我是否可能错误地保存了信息,或者我是否试图错误地打印它?
最佳答案
您的分割定界符规范中有空格,但数据中没有空格。
String[] splitOut = strLine.split(", "); // <-- notice the space?
这将产生一个长度仅为 1 的 splitOut
数组,而不是您期望的长度为 5 的数组。
由于只有在看到长度为 5 时才添加到列表中,因此检查列表末尾的第 0 个元素将导致检查空列表的第一个元素,因此出现异常。
关于java - 在Java中分割和保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392501/