我正在编写一个程序,使用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;


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

最佳答案

将LetterGrade.grade更改为

LetterGrade.valueOf(grade);


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

您需要将字符串转换为枚举。

有关更多详细信息,请参见Lookup enum by string value

07-22 11:14