我们必须计算具有多个“ this”子字符串的给定字符串中“ this”的数目。例如。 “你好,这是新兵,这是老兵,这是这个”
将返回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
最佳答案
每次重新进入循环时,都会评估条件stringTokenizer1.countTokens()
。
Per the javadoc
计算此令牌生成器的nextToken方法在生成异常之前可以被调用的次数。当前位置未提前。
这意味着countTokens()
会在您每次调用nextToken()
时发生变化
以你的例子:
对于i = 0,countTokens = 4->进入循环->调用nextToken()-> countTokens = 3
对于i = 1,countTokens = 3->进入循环->调用nextToken()-> countTokens = 2
对于i = 2,countTokens = 2->退出循环