2017-07-14 1 views
2

countTokens()メソッドは、forループで使用しているときに5ではなく3を返します。ループ内で直接使用すると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 }

OUTPUT

5 
 
foo1 
 
foo2 
 
foo3

誰も私にはその理由を知っていることができますか?あなたは

tokenizer.nextElement() 

を使用する場合、この場合には、それぞれの使用は、それをOFI、1つのトークン少なくありbecaus

答えて

2

理由があることを試してみてください

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

すべての要素を正しく見てください。

よろしくお願いします。

関連する問題