Позвольте мне начать с того, что я довольно новичок в Java, поэтому прости меня, если я делаю очевидные ошибки ...
У меня есть текстовый файл, из которого я должен читать данные и разбивать их на отдельные массивы..
Текстовый файл содержит данные в этом формате (хотя при необходимости его можно слегка изменить, чтобы иметь теги-идентификаторы, если это единственный способ)
noOfStudents
studentNAme studentID numberOfCourses
CourseName CourseNumber creditHours оценка
CourseName CourseNumber creditHours оценка
CourseName CourseNumber creditHours оценка
.
.
studentNAme studentID numberOfCourses
название курса CourseNumber creditHours оценка
название курса CourseNumber creditHours оценка * 1016CourseName CourseNumber creditHours оценка
.
.
В первой строке указано общее количество «студентов», которые будут перечислены и должны быть перемещены в массивы.Один массив будет содержать информацию об ученике, поэтому
studentName, studentID, numberOfCourses
для одного массива и
courseName, courseNumber, creditHours, класс
для второго массива.
Моя проблемавытекает из того, как анализировать эти данные.
В настоящее время я читаю в первой строке, преобразовываю в int и использую это для определения размера моего студенческого массива.После этого я не знаю, как переместить данные в массивы, и моя программа знает, в какой массив перемещать какие строки.
Следует отметить, что количество курсов, которые посещает каждый студент, является переменным, поэтому я не могу просто прочитать 1 строку в одном массиве, затем 3 строки в следующем и т. Д.
WillМне нужно использовать идентификаторы или я упускаю что-то очевидное?Я смотрю на эту проблему уже неделю, и в этот момент я просто расстраиваюсь.
Любая помощь очень ценится!спасибо
edit: Вот код, над которым я сейчас работаю.
public static void main(String args[])
{
try{
// Open the file
FileInputStream fstream = new FileInputStream("a1.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine; // temporarily holds the characters from the current line being read
String firstLine; // String to hold first line which is number of students total in file.
// Read firstLine, remove the , character, and convert the string to int value.
firstLine = br.readLine();
firstLine = firstLine.replaceAll(", ", "");
int regStudnt = Integer.parseInt(firstLine);
// Just to test that number is being read correctly.
System.out.println(regStudnt + " Number of students\n");
// 2D array to hold student information
String[][] students;
// Array is initialized large enough to hold every student with 3 entries per student.
// Entries will be studentName, studentID, numberOfCourses
students = new String[3][regStudnt];
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Split each line into separate array entries via .split at indicator character.
// temporary Array for this is named strArr and is rewriten over after every line read.
String[] strArr;
strArr = strLine.split(", ");
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
Я надеюсь, что это поможет кому-то вести меня в правильном направлении.
Я думаю, что главная проблема, с которой я столкнулся с этой точки зрения, - это найти способ зацикливания таким образом, чтобыинформация об ученике читается в массиве учеников, затем информация о курсе в соответствующем месте массива курсов, а затем снова начинается с нового ученика, пока все ученики не будут прочитаны.