2

countTokens() method returns 3 instead of 5 when i am using in for loop.

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

 }

OUTPUT

5
foo1
foo2
foo3

can anyone let me know the reason?

user19951215
  • 111
  • 5

1 Answers1

2

The reason is becaus when you use

tokenizer.nextElement()

There are one token less, in this case, each use ofi it, reduce the element counted by

tokenizer.countTokens()

try that:

    for (int i = 0; i < tokenizer.countTokens(); i++) 
    {
        System.out.println(tokenizer.countTokens());
        System.out.println(tokenizer.nextElement());
    }

for see it, and that:

    while (tokenizer.hasMoreTokens()) {
        System.out.println(tokenizer.nextElement());
    }

for look all the elements correctly.

Regards,

dbasurco
  • 91
  • 4