java - 直接在循环中使用时 countTokens() 方法行为不当

标签 java stringtokenizer

当我在 for 循环中使用时,countTokens() 方法返回 3 而不是 5。

	public static void main(String[] args) {
		String s = "foo1,foo2,foo3,foo4,foo5";
		StringTokenizer tokenizer = new StringTokenizer(s, ",");
		System.out.println(tokenizer.countTokens()); // countTokens() return 5
		for (int i = 0; i < tokenizer.countTokens(); i++) // countTokens() return 3
		{
			System.out.println(tokenizer.nextElement());
		}

	}

输出

5
foo1
foo2
foo3

谁能告诉我原因吗?

最佳答案

原因是因为当你使用

tokenizer.nextElement()

少了一个token,这种情况下,每次使用ofi,都会减少计数的元素

tokenizer.countTokens()

尝试一下:

    for (int i = 0; i < tokenizer.countTokens(); i++) 
    {
        System.out.println(tokenizer.countTokens());
        System.out.println(tokenizer.nextElement());
    }

看到它,并且:

    while (tokenizer.hasMoreTokens()) {
        System.out.println(tokenizer.nextElement());
    }

正确查看所有元素。

问候,

关于java - 直接在循环中使用时 countTokens() 方法行为不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45101202/

相关文章:

java - 在 Windows App Store 之外部署的应用程序或软件中的 Microsoft Windows Advertising SDK

java - 包括所有特殊字符的正则表达式模式

Java 构造函数无法使用可变参数

java - 我想阅读此表格内的内容

go - golang 中电子邮件模板的 Parse Html token 方法是什么?

java - JUnit - 初始化错误中的异常

java - 我可以在不进行身份验证的情况下访问 SoundCloud API 吗?

java - 检查下一个字符串标记生成器是否为空

java - 标记字符串数字中的每个数字?