扫描器的永久输入读数

Scanner's everlasting input reading

我想通过按 ENTER 按钮的用户输入来分隔文本行。虽然如果我按 ENTER 一次,它会同时给我所有的行。我想 Scanner 只是“记住”了我的第一个输入,并为下面的所有 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");

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

不,没有办法使用 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");