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

Java如何读取空格分隔的用户输入?sc.next()仅获取第一个值问题排查

问题原因

Scanner.next()方法的默认分隔符为所有空白字符(包含空格、换行符、制表符等),每次调用该方法只会返回输入流中下个分隔符之前的单个内容片段。你在代码中调用sc.next()时,已经自动截断了第一个空格之后的所有输入内容,拿到的字符串本身就只有第一个输入值,后续调用split(" ")自然只能得到长度为1的数组。

解决方案
  • 方案1:读取整行输入后再分割
    如果需要自行处理整行的所有输入内容,改用Scanner.nextLine()方法读取完整的一行输入,再做空格分割即可。示例代码如下:
System.out.print("Enter an integer width and height between 2 and 25: ");
// 注意:如果此前调用过nextInt、nextDouble等方法,需要先调用一次sc.nextLine()吃掉缓冲区残留的换行符
String[] str = sc.nextLine().split(" ");
System.out.print(str.length);
  • 方案2:直接利用Scanner的分隔特性读取多个值
    如果明确要读取的是指定数量的数值,不需要手动分割字符串,直接多次调用next()或对应类型的读取方法即可,Scanner会自动跳过空格分隔符读取下一段内容。示例代码如下:
System.out.print("Enter an integer width and height between 2 and 25: ");
int width = sc.nextInt();
int height = sc.nextInt();
// 直接拿到两个输入的整数值,无需手动切割

内容的提问来源于stack exchange,提问作者Code With Faraz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:03