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());
这句话有错误!!怎么回事
请详细的指出我的错误,谢谢,我觉得这样没错
/**
* @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循环就行了
你说的是什么呀