Scanner输入需要清除换行符

101 阅读1分钟

用java写代码用scanner函数时遇到多次录入需要用

scanner.nextLine();\删除换行符

这是怎么回事呢?

  • 问题背景

    • scanner.nextInt() 等方法 不会消费换行符,只读取数字或相应的输入。
    • nextLine() 会读取一整行,包括换行符(\n)。
  • 问题示例:

System.out.print("Enter a number: ");
int number = scanner.nextInt(); // 输入数字 
System.out.print("Enter a string: ");
String str = scanner.nextLine(); // 这里直接跳过输入 
System.out.println("Number: " + number); 
System.out.println("String: " + str);

如果输入:123 Hello World

输出结果会是:

Number: 123

String:

原因

nextInt() 只读取数字部分,换行符**(\n) 留在输入流中。

nextLine()读取换行符后立即返回空字符串。

  • 解决方法: 在使用 nextLine() 前,显式调用一次 nextLine() 清除缓冲区中的换行符:

    System.out.print("Enter a number: ");


  scanner.nextLine(); // 清除换行符

   System.out.print("Enter a string: ");

   String str = scanner.nextLine();