使用 `while(scanner.hasNextLine())` 时如何处理最后一行?

How do I process the last line when using `while(scanner.hasNextLine())`?

如标题所述,现在我有这样的东西:

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);
     }
}

显然,我的实际代码并不是这么简单,但总体思路是一样的。 循环有效,它会处理每一行直到最后一行。 这就是问题所在,它不会处理最后一行,实际上退出程序的那一行....

答案可能很简单,但我真的无法从脑海中想到它。如何处理最后一行?

您需要将最后一个 case 语句的代码移到 while 循环之外。扫描仪不会有另一条线,循环会中断。

试试下面的代码,使用 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.
      }
      
}