学习java的String类,计算字符串个数时出现的小问题

学习java的String类的遇到的小问题,

想编写一个计算字符串 s1= "sunjavahpjavaokjavajjavahahajavajavagoodjava"里面包含字符串"java"的个数。

public class Test5 {
public static void main(String[] args) {
String s1 = "sunjavahpjavaokjavajjavahahajavajavagoodjava";
int count = 0;
for(int i=s1.indexOf("java"); i!=-1; ) {
s1 = s1.replaceFirst("java", "sun");
count++;
}
System.out.println(count);
}
}

上面程序编译通过,,但是运行时死循环,,出不来。。

于是又编写了下面程序,一切正常,编译通过,,运行通过。。

public class Test6 {
public static void main(String[] args) {
String s1 = "sunjavahpjavaokjavajjavahahajavajavagoodjava";
int count = 0;
while(s1.contains("java")) {
s1 = s1.replaceFirst("java", "sun");
count++;
}
System.out.println(count);
//System.out.println(s1);
}
}

运行正常,结果为: 7

想问下各位师傅,我的第一个小程序Test5,为什么会死循环的??不胜感激。

for(int i=s1.indexOf("java"); i!=-1; ) {
s1 = s1.replaceFirst("java", "sun");
count++;
}
因为i的定义只在for语句初始化时定义一次,所以初始化之后i始终为3,按你的意思应该是这样:
for(;s1.indexOf("java")!=-1;) {
s1 = s1.replaceFirst("java", "sun");
count++;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-31
其实你可以看到,你的i永远为3,但你在循环里面写的i!=-1的时候执行
那么肯定是进入死循环
相似回答