2017-07-14 38 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,