Folgendes Problem tritt auf, wenn ich versuche die Methode improveSkills() des Player-Objekts zu verlassen:
Hier sind die relevanten Teile des Codes:
Game.java
Auszug aus Player.java
Wo liegt der Fehler?
Code:
[1] wisdom 100
[2] fortune 100
[3] leave
input: 3
[1] show character
[2] calculate
[3] improving skills
input: Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Game.main(Game.java:21)
Hier sind die relevanten Teile des Codes:
Game.java
Code:
import java.util.Scanner;
public class Game
{
public static void main(String[] args)
{
Player player = new Player();
Scanner input = new Scanner(System.in);
System.out.println("[s] save game");
System.out.println("[l] load game");
System.out.println("[x] kill program");
System.out.println();
while(true)
{
System.out.println("[1] show character");
System.out.println("[2] calculate");
System.out.println("[3] improving skills");
System.out.print("input: ");
String choice = input.next();
System.out.println();
if(choice.equals("1"))
player.show();
else if(choice.equals("2"))
{
for(int i = 0; i < 10; i++)
player.calculate();
System.out.println();
}
else if(choice.equals("3"))
{
player.improve_skills();
}
else if(choice.equals("x"))
break;
}
}
}
Auszug aus Player.java
Code:
public void improve_skills()
{
Scanner input = new Scanner(System.in);
while(true)
{
System.out.println("[1] wisdom " + skills.get(0).get_price());
System.out.println("[2] fortune " + skills.get(1).get_price());
System.out.println("[3] leave ");
System.out.print("input: ");
int choice = input.nextInt();
if(choice <= 2)
{
if(skills.get(choice-1).get_price() <= this.gold)
{
skills.get(choice-1).increase_level();
this.gold -= skills.get(choice-1).get_price();
}
else
System.out.println("not enough money");
}
else if(choice == 3)
break;
System.out.println();
}
input.close();
}
Wo liegt der Fehler?