扫描仪永久输入读取

问题描述 投票:0回答:1

我想通过用户按下 ENTER 按钮的输入来分隔文本行。不过,如果我按一次 ENTER 键,它会立即显示所有行。我想扫描仪只是“记住”我的第一个输入,并对下面的所有

input.hasNextLine()
命令进行计数。

这是代码:

System.out.println("text");
input.hasNextLine();
System.out.println("text");
input.hasNextLine();
System.out.println("text");
input.hasNextLine();
System.out.println("text");
input.hasNextLine();
System.out.println("text");

有什么方法可以剪切扫描仪读取流而不将其与缓冲区变量混淆(例如,将字符串变量设置为输入数据,然后将其与“if”语句进行比较)?

java input java.util.scanner
1个回答
0
投票

不,如果您想要的话,无法使用

hasNextLine()
方法本身。

这是因为当您调用

hasNextLine()
方法时,扫描仪不会前进超过任何输入,您只是询问扫描仪实例在此扫描仪的输入中是否还有另一行。

为了实现您的预期行为,您需要通过调用

nextLine()
方法使扫描仪前进到当前行以上。您可以选择存储读取的输入或忽略它。

Scanner input = new Scanner(System.in);
System.out.println("text");
input.nextLine();
System.out.println("text");
input.nextLine();
System.out.println("text");
input.nextLine();
System.out.println("text");
input.nextLine();
System.out.println("text");
© www.soinside.com 2019 - 2024. All rights reserved.