我曾尝试使用StringTokenizer将字符串拆分为令牌,但当我尝试计数或打印令牌时,它只包括第一个单词。如有任何帮助,我们将不胜感激。
Scanner s = new Scanner(System.in);
System.out.println("ENTER STRING:");
text = s.next();
StringTokenizer str = new StringTokenizer(text," ");
System.out.println(str.countTokens());
while(str.hasMoreTokens())
{ System.out.println(str.nextToken()); }
输出:
输入字符串:大家好,欢迎来到java
1
Hi-
您的问题不在于StringTokinizer
。就在这里:
text = s.next();
扫描仪还可以在空白处进行分隔。所以上面的行只读取第一个字Hi
。这就是为什么tokenizer只包含这个词的原因。
解决方案是使用扫描仪的nextLine
方法。它读取完整的输入行。
StringTokenizer是遗留的
StringTokenizer
是遗留版本,仅与Java一起提供以实现向后兼容性。建议使用String.split()
将字符串分隔为标记。
完整示例:
Scanner s = new Scanner(System.in);
System.out.println("Enter string:");
String text = s.nextLine();
String[] tokens = text.split(" ");
System.out.println(tokens.length);
for (String t : tokens) {
System.out.println(t);
}
示例会话:
Enter string:
Hi welcome to java
4
Hi
welcome
to
java