本帖最后由 庄星睿 于 2012-7-14 23:26 编辑
class Test
{
public static void show()
{
String str="abcdabcdabcd";
String s1="ab";
int count=0;
System.out.println("........."+str.indexOf(s1,1));
int i=0;
while(i<str.length()) // 这里有问题
{
if (str.indexOf(s1,i)>=0)
{
int temp=str.indexOf(s1,i)+1;
i=temp;
}
count=count+1;
System.out.println(count);
}
System.out.println(count);
}
public static void main(String[]args)
{
show();
}
}
while(i<str.length())i的值等于你索引字符串中的角标值,如果返回-1说明字符串不存在,但如果找到了,他返回的角标值最大值是str.length()-1,所以永远都小于str.length(),所以你写的循环相当于 while(true)无限循环了,还有你这么写有点麻烦,下面是我在你代码基础上改后的:
class Test
{
public static void show(String s1,String s2)
{
String str_max=s1.length()>s2.length()?s1:s2; //判断字符串的大小
String str_min=str_max==s1?s2:s1;
int i=0,count=0;
while((i=str_max.indexOf(str_min,i))!=-1)
{
count++;
i=i+str_min.length();
}
System.out.println(count);
}
public static void main(String[]args)
{
String str="abcdcabdcabdab";
String s1="ab";
show(str,s1);
}
}
|