#java #java.util.scanner
#java #java.util.scanner
Вопрос:
Как указано в названии, прямо сейчас у меня есть что-то похожее на это:
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()){
string input = scanner.nextLine();
switch(input){
case 1:
do stuff;
break;
case 2:
do stuff;
break;
case 3;
printf("we're done here");
scanner.close();
System.exit(1);
}
}
Очевидно, что мой фактический код не так прост, но общая идея та же.
Циклы работают, и они обрабатывают каждую строку до последней.
И вот в чем проблема, она не будет обрабатывать последнюю строку, ту, которая фактически завершает программу….
Ответ, вероятно, очень прост, но я не могу думать об этом с самого начала. Как я могу обработать последнюю строку?
Ответ №1:
Попробуйте приведенный ниже код, он работает, используйте System.exit (0) должен выйти за пределы переключателя.
Scanner scanner = new Scanner(System.in);
boolean flag = false;
while(scanner.hasNextLine()){
string input = scanner.nextLine();
switch(input){
case 1:
do stuff;
break;
case 2:
do stuff;
break;
case 3;
printf("we're done here");
flag = true;
break;
}
if(flag) {
System.exit(0); //try 'break' too.
}
}
Комментарии:
1. CaoTheNoob если это решило вашу проблему, не могли бы вы принять ответ.
2. спасибо за ввод, похоже, мне просто нужно было добавить a
break;
в случае 3!
Ответ №2:
Вам нужно переместить код для последнего оператора case за пределы цикла while. У сканера не будет другой строки, и цикл прервется.