StringTokenizer只存储第一个令牌



我曾尝试使用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

相关内容

  • 没有找到相关文章

最新更新