這個問題在這里已經有了答案: 關閉鏈接到 System.in 的掃描儀 5 個答案 16 天前關閉。
我正在制作一個簡單的控制臺游戲,其中允許玩家根據String從鍵盤收集的輸入分別為 a、d、w 和 s 在 x、-x、y、-y 方向上移動,但是掃描儀正在投擲NoSuchElementException,我嘗試使用收集資料nextInt()也是,但我得到了類似的例外。注意:但掃描儀作業一次,即第一次。
我的代碼
private static void gamePlay(boolean isPlaying) {
while (isPlaying) {
System.out.println("Choose a, d , s or w for movement:");
Scanner sc = new Scanner(System.in);
String choice = sc.next();
sc.close();
// code for movement of player according to a or s or d or w
switch (choice) {
case "a":
// Some code here
// move -x
break;
case "d":
// Some code here
// move x
break;
case "w":
// Some code here
// move y
break;
case "s":
// Some code here
// move -y
break;
case "q":
//quit
isPlaying = false;
break;
default:
break;
}
}
}
** 輸出**
Choose a, d , s or w for movement:
a
Choose a, d , s or w for movement:
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at App.gamePlay(App.java:37)
at App.main(App.java:17)
uj5u.com熱心網友回復:
private static void gamePlay(boolean isPlaying) {
while (isPlaying) {
System.out.println("Choose a, d , s or w for movement:");
Scanner sc = new Scanner(System.in);
String choice = sc.next();
// code for movement of player according to a or s or d or w
switch (choice) {
case "a":
// Some code here
// move -x
break;
case "d":
// Some code here
// move x
break;
case "w":
// Some code here
// move y
break;
case "s":
// Some code here
// move -y
break;
case "q":
//quit
sc.close();
isPlaying = false;
break;
default:
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482907.html
標籤:爪哇 例外 java.util.scanner 没有这样的元素异常
上一篇:.net中多步業務場景的后備方法
