0

我正在创建一个模拟扫描仪标记功能的程序。我有一个带有学生姓名的文本文件,后面是他们的答案。这是我创建的示例文件:

Arnie
EADCC
Betty
dadec
Carol
ba ea

在我的主文件中,我要求用户输入文件名,然后将其传递给我创建的 QuizMarker 类。现在我想将名称作为字符串抓取并将其放入一维数组并将答案作为字符数组抓取并将其放入二维数组,以便我可以将学生答案与正确答案文件进行比较。我只是为了测试目的对行数进行了硬编码。我一直在试图弄清楚如何让这项工作整整一天,但我的大脑现在完全被烤熟了。我需要帮助。这是我的方法代码readNamesAnswers():

public void readNamesAnswers(){
    while (readerStu_Ans.hasNext()){
        studentName[indexStudentName] = readerStu_Ans.nextLine();
        for (int iRowStudentAnswer=0; iRowStudentAnswer<3; iRowStudentAnswer++){
             studentAnswers[iRowStudentAnswer]= stuAnswers.split("(?!^)");
             System.out.println(studentAnswers[iRowStudentAnswer][0]);
        }

        for(int row=0; row<3; row++){
            for(int column= 0; column<studentAnswers[column].length; column++){
                  System.out.println(studentAnswers[column][row]);
            }
        }

        System.out.println("\n"+studentName[indexStudentName]);
        System.out.println();
        indexStudentName++;
    }
}

PS。我是 Java 和一般编程的新手。

4

1 回答 1

1

您创建了非常复杂的代码,难以理解且难以维护。你真的需要使用二维数组吗?

这可以通过另一种方式轻松完成。您可以创建另一个类来保存每个学生的所有数据。像这样的东西。

public class Student{

        private String name;
        private String answer;

        public Student(String name, String answer) {
            super();
            this.name = name;
            this.answer = answer;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAnswer() {
            return answer;
        }

        public void setAnswer(String answer) {
            this.answer = answer;
        }       

}

通过开设此类课程,您可以轻松设置并获取每个学生的任何信息。

您可以逐行读取文件并将每个学生的信息添加到新的 Student 实例中。每个学生都是学生的一个新实例。

您可以将所有这些对象保存在 List、Set、Map 或其他东西中……阅读 Java 中的集合。这很重要。

这是一种方法。

List<Student> students = new ArrayList<Student>();

int studentCount = 3;

for (int i = 0; i < studentCount; i++) {    
    students.add(new Student("name", "answer"));
}

这样,代码易于阅读和理解。一旦你学会了集合,你就会问自己,没有它你怎么能编程……你会重生的!

于 2013-09-15T06:14:16.477 回答