我想通过用户按下 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”语句进行比较)?
不,如果您想要的话,无法使用
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");