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

Java中split函数分割字符串结果不符合预期问题求助

问题根因

  • 问题出在Scanner类的next()方法的默认行为:next()会以空白符(空格、制表符、换行符等)作为读取终止符,仅返回第一个空白符之前的输入内容。你输入hello world java时,s0实际仅被赋值为hello,对该值按空格分割自然得到长度为1的数组。

修复方案

方案1:使用nextLine()读取整行输入

将String s0=sc.next();替换为String s0=sc.nextLine();即可。nextLine()会读取整行输入直到遇到换行符,可完整拿到hello world java整段内容,按空格分割后即可得到长度为3的数组。
修复后完整代码:

import java.util.*;
class Solution {
    public static void main(String d[]) {
        Scanner sc = new Scanner(System.in);
        // 改用nextLine读取完整的一行输入
        String s0 = sc.nextLine();
        String p[] = s0.split(" ");
        System.out.println(p.length);
    }
}

方案2:直接利用Scanner的默认分割特性

Scanner默认就以空白符作为输入分隔符,不需要手动调用split方法,直接迭代读取所有输入即可得到拆分后的内容:

import java.util.*;
class Solution {
    public static void main(String d[]) {
        Scanner sc = new Scanner(System.in);
        List<String> inputList = new ArrayList<>();
        while (sc.hasNext()) {
            inputList.add(sc.next());
        }
        System.out.println(inputList.size());
    }
}

优化提示

如果输入内容存在多个连续空格的场景,split(" ")会生成空字符串元素,建议改为使用正则匹配多个空白符:s0.split("\\s+"),可以自动忽略连续空格,得到更符合预期的分割结果。


内容的提问来源于stack exchange,提问作者Rishabh Talwar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:42:01