用nextline()才能读取含空格的整行字符串,因next()遇空格即停止;若前有nextint()等调用,须先用nextline()清除缓冲区残留换行符。

用 Scanner 读取一整行(含空格)的字符串,关键是要用 nextLine(),而不是 next() 或 nextXXX() 系列方法。
为什么 next() 不行?
next() 只读取到下一个空白字符(空格、制表符、换行符)为止,遇到空格就停了,所以无法获取带空格的完整输入。
例如输入 "Hello World",next() 只得到 "Hello"。
正确做法:用 nextLine()
nextLine() 会读取从当前位置直到换行符之前的所有字符(包括空格),返回一整行字符串。
- 调用前确保输入缓冲区中没有残留的换行符(常见于先调用了
nextInt()、nextDouble()等之后) - 如果前面有其他
nextXXX()调用,务必在它后面加一句scanner.nextLine();消掉换行符
典型错误与修复示例
错误写法(导致 nextLine() 读到空行):
Scanner sc = new Scanner(System.in); int age = sc.nextInt(); // 输入 25 后按回车,换行符留在缓冲区 String name = sc.nextLine(); // 直接读到换行符,name 为空字符串
正确写法:
Scanner sc = new Scanner(System.in); int age = sc.nextInt(); sc.nextLine(); // 消除换行符 String name = sc.nextLine(); // 这时才能正确读取带空格的姓名
完整安全示例
以下代码能稳定读取带空格的一整行:
Scanner sc = new Scanner(System.in);
System.out.print("请输入年龄:");
int age = sc.nextInt();
sc.nextLine(); // 清除换行符
System.out.print("请输入姓名(可含空格):");
String name = sc.nextLine();
System.out.println("年龄:" + age + ",姓名:" + name);
输入 25 回车,再输入 Zhang San 回车,输出就是:
年龄:25,姓名:Zhang San
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











