我们必须计算"这个"在一个给定的字符串中有多个"这个"子。例如。 "你好,这是一名新兵,这是一名老将,这就是这个" 将返回4.
所以我正在使用:
StringTokenizer stringTokenizer1 = new StringTokenizer(input2);
ArrayList<String> arrayList1 = new ArrayList<String>();
int count=0;
int arrIndex = stringTokenizer1.countTokens();
for (int i = 0; i < stringTokenizer1.countTokens(); i++)
{
arrayList1.add(stringTokenizer1.nextToken());
}
for (String string2 : arrayList1)
{
if (string2.equals(string))
{
count++;
}
}
output1 = count;
System.out.println(output1);
仅返回2.
但是,如果为int arrindex
分配了stringTokenizer1.countTokens()的值并在循环条件中使用,则它会给出正确的结果4.为什么?
注意:使用JavaSE-1.6
答案 0 :(得分:3)
那是因为当您正在执行stringTokenizer1.nextToken()时,您正在更改令牌化程序的状态,并且您将只剩下一个令牌来阅读。
答案 1 :(得分:3)
每次重新进入循环时都会评估条件stringTokenizer1.countTokens()
。
计算在生成异常之前可以调用此标记生成器的nextToken方法的次数。目前的立场没有提前。
这意味着每次拨打countTokens()
nextToken()
都会发生变化
用你的例子: