繁体   English   中英

如何从文件中读取字符串,将其拆分为字符并放入2D数组中?

[英]How can I read a String from a file split it into characters and put it in to a 2D array?

我正在创建一个模拟scantron标记器功能的程序。 我有一个文本文件,上面写着学生的名字,后面是他们的答案。 这是我创建的示例文件:

Arnie
EADCC
Betty
dadec
Carol
ba ea

在我的主机中,我要求用户输入文件名,然后将其传递给我创建的QuizMarker类。 现在,我想以字符串的形式获取名称,并将其放入一维数组,以字符数组的形式获取答案,并将其放入2D数组,以便可以将学生答案与正确答案文件进行比较。 我仅出于测试目的对行数进行了硬编码。 我一直在试图弄清楚如何使这一工作整日变得异常糟糕,但是现在我的大脑已经完全被烤透了。 我需要帮助。 这是我的方法readNamesAnswers():代码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和一般编程的新手。

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

这可以通过另一种方式轻松完成。 您可以创建另一个类,其中包含每个学生的所有数据。 这样的事情。

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实例中添加每个学生的信息。 每个学生都是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"));
}

这样,代码就易于阅读和理解。 学习了系列之后,您会问自己:如果没有它,您怎么会编程……您将重生!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM