java - 如何从文件中读取字符串并将其拆分为字符并将其放入二维数组中?

标签 java arrays multidimensional-array

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

Arnie
EADCC
Betty
dadec
Carol
ba ea

在我的 main 中,我要求用户输入文件名,然后将其传递给我创建的 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 和一般编程不太熟悉。

最佳答案

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

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

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;
        }       

}

通过开设此类(class),您可以轻松设置和获取每个学生的任何信息。

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

您可以将所有这些对象保存在列表、集合、 map 或其他内容中...了解 collections在 java 。这非常重要。

这是一种实现方法。

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

int studentCount = 3;

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

这样,代码就很容易阅读,也很容易理解。 一旦你学习了集合,你就会问自己,没有它你怎么能编程......你会重生!

关于java - 如何从文件中读取字符串并将其拆分为字符并将其放入二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809166/

相关文章:

java - 为 TermVectors 安装 Solr 补丁

java - 在http GET请求中传递cookie jmeter

javascript - 按键求和 Javascript 对象数组

c++ - 在 C++ 中初始化一个 const 多维数组

c++ - 添加二维数组中列的值

java - 我如何延迟连接流?

java - 单元测试时未找到自定义注释

c++ - 这段 C++ 代码如何在 GCC 而不是 Visual C++ 中运行?

javascript - 在 Javascript 中使用随机索引初始化数组

c - 在 C 中保存多维数组