2017-07-14 36 views
2

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

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

 
\t }

输出

5 
 
foo1 
 
foo2 
 
foo3

谁能告诉我原因吗?

回答

2

的原因是因为...当你使用

tokenizer.nextElement() 

有一个令牌少,在这种情况下,每次使用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()); 
    } 

用于正确查看所有元素。

Regards,