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

countTokens() method misbehave when using directly in loop

countTokens() 方法 returns 当我在 for 循环中使用 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,这种情况下,每使用一次,减少

个元素
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());
    }

正确查看所有元素。

此致,