直接在循环中使用时 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());
}
正确查看所有元素。
此致,
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());
}
正确查看所有元素。
此致,