1 回答

TA貢獻1719條經驗 獲得超6個贊
s.close();關閉當前Scanner對象,以及所有底層流(System.in在本例中就是如此)。一旦標準輸入流關閉,您就無法再打開它。
因此,總而言之,在確定不再需要掃描儀并重新構建代碼后,最好關閉它,如下所示:
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
Student s = Test.readStudent(sc);
// do something with your student object here
}
sc.close();
并將你的方法更改為
public static Student readStudent(Scanner s) throws IOException {
Scanner s = new Scanner(System.in);
System.out.println("Enter first name of student");
String fname = s.nextLine();
System.out.println("Enter middle name of student");
String mname = s.nextLine();
System.out.println("Enter last name of student");
String lname = s.nextLine();
System.out.println("Enter name format(1 for ',' and 2 for ';') ");
int num = s.nextInt();
s.nextLine(); // Need to consume new line
System.out.println("Enter age of student");
int age = s.nextInt();
s.nextLine(); // Need to consume new line
// no closing here
return new Student(new Name(String.join((num == 1) ? "," : ";", fname,
mname, lname)), age);
}
添加回答
舉報