Как мне обработать последнюю строку при использовании `while (scanner.hasNextLine ())`?

#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. У сканера не будет другой строки, и цикл прервется.