如何使用jFrame将文件的一部分加载到Java中的ArrayList中?

时间:2014-12-01 01:11:19

标签: java swing arraylist

我正在编写一个程序,该程序使用jFrame UI来读取记录文件的内容,其中包含“成绩”(A,B,C,C +等),然后计算成绩总数,以及最高和最低等级。在jFrame中,用户输入文件名(我不想使用JFileChooser,因为这不是赋值的一部分)并单击“加载”以加载文件。我正在努力使用Load()方法。到目前为止,我有:

  public ArrayList<LetterGrade> Load(File file) throws FileNotFoundException {

    ArrayList<LetterGrade> grades = new ArrayList();

    try{
        Scanner input = new Scanner(file);
        String grade = input.nextLine();
        grades.add(LetterGrade.grade);
    } catch (FileNotFoundException ex) {
        System.out.printf("ERROR: %s", ex);
    }

    return grades;

我知道该行中存在一个问题,即grade.add(LetterGrade.grade),因为我只能将一个LetterGrade枚举(A,AMinus,BPlus,B等)添加到ArrayList“等级”,而等级是一个字符串。我怎样才能使Scanner读取文件时,每个等级并将其添加到名为“grade”的ArrayList中?另外,我只想获得属于我的LetterGrade枚举的成绩,所以我会使用if / else来过滤那个吗?感谢您的帮助,我会尽快回答问题。

2 个答案:

答案 0 :(得分:1)

Java无法将值LetterGrade的字符串直接自动转换为LetterGrade。你可以自己编写这个功能。尝试做这样的事情:

LetterGrade parseGrade(String grade) {
    if(grade.equals("A") return LetterGrade.A;
    // and so on
}

然后,而不是

grades.add(LetterGrade.grade);
Load()

,你会得到这个:

grades.add(parseGrade(grade));

如果您想先检查您添加的内容是否为有效成绩,如果parseGrade()成为无效成绩,请null返回null,然后检查{{1将成绩添加到grades

答案 1 :(得分:1)

将LetterGrade.grade更改为

LetterGrade.valueOf(grade);

LetterGrade.grade将用于访问LetterGrade范围内名为grade的变量。

您需要将String转换为Enum。

有关更多详情,请参阅Lookup enum by string value