You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java初学者求助:Scanner使用useDelimiter读取整行的相关疑问

Scanner中System.getProperty("line.separator")的作用解析

给你拆解清楚核心逻辑:

  • Scanner默认的分隔规则是匹配所有空白字符(空格、制表符、换行符全算),所以默认调用next()时,只会读到第一个空格就停止,这就是你输入"Hanu babbar"只能拿到"Hanu"的原因。
  • System.getProperty("line.separator")的作用很直接:获取当前操作系统的换行符——Windows系统下是\r\n,Linux和macOS系统下是\n,用它可以实现跨系统的换行符适配,不用硬写死某一种固定格式。

当你把Scanner的分隔符改成换行符后,next()方法的行为就变了:它会从当前位置一直读到换行符为止,中间的空格、制表符都会被当成普通字符保留,自然就能完整读取包含空格的"Hanu babbar"了。

其实这种写法和直接用sc.nextLine()效果完全一致,只是换了一种实现思路而已。

附上你提到的代码片段:

Scanner sc = new Scanner(System.in);
sc.useDelimiter(System.getProperty("line.separator"));
System.out.println("Please enter your name");
String name = sc.next();
System.out.println("Hello " + name);
sc.close();

内容的提问来源于stack exchange,提问作者Hanu babbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:09:54