java - 在Java中分割和保存数据

标签 java

我正在尝试读取数据文件并将不同的变量保存到数组列表中。

数据文件的格式看起来有点像这样

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/

相关文章:

java - Android Studio Commons 数学 "NoClassDefFoundError"

java - 是否可以在@RequestBody 中传递多个对象?

java - API 29 java android 中不推荐使用 getBitmap

java - 线程 "main"java.lang.NumberFormatException : For input string "F:/TextFiles/loginaccs.txt" 中的异常

java - 在 MySQL 中使用触发器时,在 JPA 中插入后创建的日期时间不会更新

java - Controller 类未加载 Spring

使用多个选择框的 JavaFX 过滤 ListView

java - 如何停止播放 youtube 视频

java - 为什么 getFirstResult() 和 getMaxResults() 不从数据库返回第 x 到 y 行的 block ?

java - Drools 集成与传统方式