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
相关产品推荐
相关产品推荐

