亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java掃描器類沒有這樣的元素異常錯誤

Java掃描器類沒有這樣的元素異常錯誤

揚帆大魚 2023-08-09 17:25:58
我有一個帶有靜態方法的測試類來獲取輸入。 class Test {        public static Student readStudent() 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();            System.out.println("Enter age of student");            int age = s.nextInt();            s.close();            return new Student(new Name(String.join((num == 1) ? "," : ";", fname,                    mname, lname)), age);        }    }我能夠接受一名學生的輸入,但是一旦我將其放入 for 循環中,我就會收到錯誤java.util.NoSuchElementException: No line found。這是我的循環for (int i = 0; i < 10; i++) {            Student s = Test.readStudent();        }為什么我會收到此錯誤?謝謝。
查看完整描述

1 回答

?
慕俠2389804

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

}



查看完整回答
反對 回復 2023-08-09
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號