java!!求一个string中字符串出现的次数

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:11:48
public class SearchString {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

String s = "sunjavahahahahjavasunhahaibmsunjavajavahahajava";
String ToFind = "java";
int index = 0;
int count = 0;

while (index != -1) {
index = s.indexOf(ToFind);

s = s.substring(index + ToFind.length());
count++;

}
System.out.println("一共有" + count + "个" + ToFind);
}

}

提示说s = s.substring(index + ToFind.length());
这句话有错误!!怎么回事
请详细的指出我的错误,谢谢,我觉得这样没错

你的while循环有问题!

当运行到index=-1时,还在继续向下运行,
即s = s.substring(index + ToFind.length()); <---此时已经无法正常截取
方法一:
index = s.indexOf(ToFind);
if(index!=-1)
{s = s.substring(index + ToFind.length());
count++; }

方法二:
index = s.indexOf(ToFind);
if(index==-1) break;
s = s.substring(index + ToFind.length());
count++;

两个方法的原理都是相同的,都是处理index=-1时的情况,一个是依靠while跳出,一个是依靠break;

建议:你以后编程序是要考虑极限,就是开头和最后两种情况

程序写的逻辑有问题
就算没有匹配的
你最后也会输出 1 个
--------------------
while (index != -1) {
index = s.indexOf(ToFind);
if(index == -1) break;
int length = ToFind.length();
s = s.substring(index + length);
count++;

}

把while循环换成if循环就行了

你说的是什么呀