嘿伙计们,我不明白为什么我在这个简单的代码中遇到异常
我正在尝试制作纸牌游戏,并尝试阅读用户想要的他手中的卡片索引(它是德语)
public Karte abschlagen(Karte gegnK) {
System.out
.println("Bitte die Zahl für die jeweilige Karte auswählen: ");
gibHandAus(); // prints the users cards with their indexes
try {
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
if (index < 0 || index >= getHand().size()) {
System.out
.println("Bitte nur eine der gegebenen Zahlen auswählen!");
sc.close();
return abschlagen(gegnK);
}
Karte k = getHand().get(index);
getHand().remove(index);
sc.close();
那么这里有什么问题呢?
在我可以选择一个数字之前,它会引发 noSuchElement 异常。
我在另一个问题中读到 close() 方法可能会导致这种情况,但没有它它仍然会这样做。
错误信息是:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at durak.Spiel.spielerWehrtAb(Spiel.java:229)
at durak.Spiel.main(Spiel.java:314)
编辑: spielerWehrAb() 的代码:
public static boolean spielerWehrtAb(Karte k) {
.
.
.
try {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
sc.close();
if (x == 0) {
... }
else if(x == 1) {
System.out.println("1 ausgewählt");
Karte k2 = spieler.abschlagen(k);
....
}
else return spielerWehrAb(k);