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