Чтение ввода с клавиатуры внутри цикла
Я пытаюсь сделать простую систему меню, но она дает мне "NoSuchElementException".
Когда я нажимаю опцию 1, она работает хорошо, но когда я вызываю опцию 2, она спрашивает у меня "w", а затем выдается исключение.
Я пытался добавить if (sc.hasNext)
как я видел в этом посте, но после того, как я вызвал опцию 2, он продолжает цикл и не позволяет мне вводить значение для X.
public Main() {
int x = 5;
Scanner sc = new Scanner(System.in);
while(x != 0) {
System.out.println("########## MT ###########");
System.out.println("# 1 - Read MT #");
System.out.println("# 2 - Read w #");
System.out.println("# 0 - Exit #");
System.out.println("#########################");
System.out.print("Option: ");
x = sc.nextInt(); //Here is the error.
switch (x) {
case 1:
setMaquina(new MT());
break;
case 2:
if (getMaquina() == null) {
System.out.println("MT is null.");
}
else {
Scanner scc = new Scanner(System.in);
System.out.print(" ~ w: ");
String w = scc.nextLine();
getMaquina().readString(w);
scc.close();
}
break;
case 0:
x = 0;
break;
default:
break;
}
}
sc.close();
}
РЕДАКТИРОВАТЬ
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at maquina.turing.Main.<init>(Main.java:26)
at maquina.turing.Main.main(Main.java:11)