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

StringTokenizer无法逐行打印单个单词的技术问题求助

问题修正方案

原代码的两处核心问题

  • 分隔符设置错误:你写的".|?||!|"里多了多余的竖线,而且没包含空格——输入里的单词是用空格分隔的,不加空格根本切不出正确的单词;另外StringTokenizer的分隔符是逐个字符生效的,正确的分隔符应该包含空格、问号、感叹号、句号这些,比如" .?!'"(把空格放前面能避免产生空token)。
  • 打印逻辑完全错误:你用内层循环根据st.countTokens()的次数打印当前token,这会导致每个token重复打印的次数等于剩余token的数量,完全不是逐行打印每个单词的逻辑。

修正后的代码

import java.util.StringTokenizer;

public class TokenizerTest {
    public static void main(String[] args) {
        String s = "How are you?";
        // 分隔符包含空格、.、?、!,确保能正确分割出每个单词
        StringTokenizer st = new StringTokenizer(s, " .?!");
        
        while(st.hasMoreTokens()) {
            String t = st.nextToken();
            // 直接打印取出的每个token即可,不需要内层循环
            System.out.println(t);
        }
    }
}

测试结果

输入How are you?,输出:

How
are
you

(如果需要把每个单词首字母大写,可在打印前加一行:t = t.substring(0,1).toUpperCase() + t.substring(1);)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:42:40