[英]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.