countTokens()方法在循环中直接使用时行为异常

时间:2017-07-14 10:53:39

标签: 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

任何人都可以让我知道原因吗?

1 个答案:

答案 0 :(得分:2)

当你使用

时,原因就在于此
tokenizer.nextElement()

在这种情况下,有一个令牌减少,每次使用它,减少

计算的元素
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());
    }

正确查看所有元素。

此致