Java 在for条件中使用StringTokenizer.countTokens()
代码1: 代码2:Java 在for条件中使用StringTokenizer.countTokens(),java,Java,代码1: 代码2: 5 0 as 1 df 2 gg 3 hj 4 kl 为什么第二个代码会得到部分输出 这是因为nextToken()方法在每次迭代中提升了位置吗 是的,您是正确的,()不是一个常量值,而是返回在生成前可以调用此标记器的nextToken方法的次数 例外。 引述: 计算此标记器的nextToken方法在生成异常之前可以被调用的次数。当前位置不高级 因此,每次调用s1.nextToken()s1.countTokens()返回另一个值时,(变得越来越短),
5
0 as
1 df
2 gg
3 hj
4 kl
- 为什么第二个代码会得到部分输出
- 这是因为
方法在每次迭代中提升了位置吗nextToken()
s1.nextToken()
s1.countTokens()返回另一个值时,(变得越来越短),都有两个值交叉(for循环中的int i和countTokens
),这出乎意料地将您带出for循环是的,您是正确的,()不是一个常量值,而是返回此标记器的nextToken方法在生成之前可以被调用的次数
例外。
引述:
计算此标记器的nextToken方法在生成异常之前可以被调用的次数。当前位置不高级
因此,每次在返回另一个值时调用
s1.nextToken()
s1.countTokens()(越来越短),都会有两个值交叉(for循环中的int i和countTokens
)这出乎意料地将您带出for循环不要在for循环中始终评估相同的结果。所以在for循环之前,您可以引入新的变量call count并分配s1.countTokens();并使用count变量代替s1.countTokens() 不要在for循环中始终评估相同的结果。所以在for循环之前,您可以引入新的变量call count并分配s1.countTokens();并使用count变量代替s1.countTokens() 我同意你的观点。。但是我仍然猜不出为什么我会得到代码2的部分输出。我更新了答案,i在增加,s1.countTokens在变小,所以在某个点上,条件iI同意你的观点。。但是我仍然猜不出为什么我会得到代码2的部分输出。我更新了答案,i在增加,s1.countTokens在变小,所以在某个点上,条件i
5
0 as
1 df
2 gg
3 hj
4 kl
import java.util.StringTokenizer;
class Test {
public static void main(String args[]) {
StringTokenizer s1 = new StringTokenizer("as df gg hj kl");
System.out.println(s1.countTokens());
for(int i = 0; i < s1.countTokens(); i++){
System.out.print(i + "\t");
System.out.println(s1.nextToken());
}
}
}
5
0 as
1 df
2 gg