Когда вы вызываете split("\\s+")
, результирующий массив будет выглядеть так:
gradeArr[0] = 3.3;
gradeArr[1] = John;
Так что, если вы позвоните gradeArr[1]
, вы получите имя.
Вам нужно позвонить reader.nextLine();
после вашего reader.nextInt();
. Вам нужно прочитать символ ввода после int
, чтобы оказаться на следующей строке .text файла.
Работает следующий код:
File StudentGrade = new File("E:/workspace/Test/src/main/java/data.txt");
Scanner reader = new Scanner(StudentGrade);
int size = reader.nextInt();
// debug: System.out.println(size);
reader.nextLine();
String[] gradeArr = new String[size];// array created for grades
// debug: System.out.println(gradeArr);
String[] nameArr = new String[size];// array created for name
String[] temp = new String[100];// array created for temporary array
int index = 0;// index indicator
while (reader.hasNextLine()) {
String s = reader.nextLine();
// System.out.println(s);
temp = s.split("\\s+");
gradeArr[index] = temp[0];
nameArr[index] = temp[1];
System.out.println("grades= " + gradeArr[index] + " name = " + nameArr[index]);
index++;
}
А вот и результат:
grades= 3.3 name = John
grades= 3.9 name = Jim
grades= 3.5 name = Kathy
grades= 3.2 name = Steve
grades= 2.4 name = Stacy
grades= 2.8 name = Faith
data.text:
6
3.3 John
3.9 Jim
3.5 Kathy
3.2 Steve
2.4 Stacy
2.8 Faith