簡體   English   中英

關閉掃描程序會引發java.util.NoSuchElementException

[英]Closing a Scanner throws java.util.NoSuchElementException

我正在用Java從頭開始編寫RPG戰斗系統,雄心勃勃吧? 好吧,我遇到了麻煩。 這是我的代碼:

void turnChoice() {
    System.out.println("What will you do? Say (Fight) (Run) (Use Item)");
    Scanner turnChoice = new Scanner(System.in);
    switch (turnChoice.nextLine()) {
        case ("Fight"):
            Combat fighting = new Combat();
            fighting.fight();
        default:
    }

    turnChoice.close();
}

當它到達代碼中的這一點時,我得到:

你會怎么做? 說(戰斗)(奔跑)(使用物品)
線程“主”中的異常java.util.NoSuchElementException:找不到行
在java.util.Scanner.nextLine(未知來源)
在Combat.turnChoice(Combat.java:23)

該類稱為Combat,我只希望它提供一個戰斗或運行或使用物品的選項,我首先嘗試僅使用fight方法。 請幫助,我是Java的新手,所以如果可能的話,不要使事情變得太復雜。

當您從System.in使用Scanner進行讀取時,不應關閉任何Scanner實例,因為關閉一個實例將關閉System.in並且在執行以下操作時,將引發NoSuchElementException

Scanner sc1 = new Scanner(System.in);
String str = sc1.nextLine();
...
sc1.close();
...
...
Scanner sc2 = new Scanner(System.in);
String newStr = sc2.nextLine();      // Exception!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM