各位看看下面程序有什么错误,老是和实际的不符 谢了先!public class Test{
public static void main(String[] args){
int a = calculate("This is a room"," ");
System.out.println(a);
int b = calculate("I am A teacher","a");
System.out.println(b);
int c = calculate("This is a room","is");
System.out.println(c);
int d = calculate("aaaa","aa");
System.out.println(d);
}
public static int calculate(String str,String substr){
int ch = 0;
int j = 0;
String str1;
for(int i=0;i<=str.length();i++){
j = str.indexOf(substr);
str1 = str.substring(j+1, str.length());
str = str1;
ch++;
}
return ch;
}
查找给定字符串中的子串 并返回个数
public static void main(String[] args){
int a = calculate("This is a room"," ");
System.out.println(a);
int b = calculate("I am A teacher","a");
System.out.println(b);
int c = calculate("This is a room","is");
System.out.println(c);
int d = calculate("aaaa","aa");
System.out.println(d);
}
public static int calculate(String str,String substr){
int ch = 0;
int j = 0;
String str1;
for(int i=0;i<=str.length();i++){
j = str.indexOf(substr);
str1 = str.substring(j+1, str.length());
str = str1;
ch++;
}
return ch;
}
查找给定字符串中的子串 并返回个数
public static void main(String[] args) {
int a = calculate("This is a room", " ");
System.out.println(a);
int b = calculate("I am A teacher", "a");
System.out.println(b);
int c = calculate("This is a room", "is");
System.out.println(c);
int d = calculate("aaaa", "aa");
System.out.println(d);
} public static int calculate(String str, String substr) {
String temp = str;
int count = 0;
int index = temp.indexOf(substr);
while (index != -1) {
temp = temp.substring(index + 1);
index = temp.indexOf(substr);
count++;
}
return count;
}
}
public class Test{
public static void main(String[] args){
int a = calculate("This is a room"," ");
System.out.println(a);
int b = calculate("I am A teacher","a");
System.out.println(b);
int c = calculate("This is a room","is");
System.out.println(c);
int d = calculate("aaaa","aa");
System.out.println(d);
} public static int calculate(String str,String substr){
int ch = 0;
int strlen = 0;
int j = 0;
strlen = substr.length();
String str1;
for(int i=0;i <=str.length();i++){
j=0;
j = str.indexOf(substr);
if (j >= 0)
{
ch++;
}
str1 = str.substring(j+strlen, str.length());
str = str1;
}
return ch;
}
}
运行结果:
3
2
2
2
"aaaa"
第1、2组成:aa
第2、3组成:aa
第3、4组成:aa
所以就是 3 个啦。
我觉得2楼的方法不错,可以解决出界问题。还有length是算字符个数是从1开始的不是从0开始所以要减1.
public class Test
{
public static void main(String[] args)
{
int a = calculate("This is a room"," ");
System.out.println(a);
int b = calculate("I am A teacher","a");
System.out.println(b);
int c = calculate("This is a room","is");
System.out.println(c);
int d = calculate("aaaa","aa");
System.out.println(d);
} public static int calculate(String str,String substr)
{
int ch = 0;
int j = 0;
String str1;
for(int i=0;i <=str.length()-1;i++)
{
j = str.indexOf(substr); //最小标索引值
//System.out.println(j); 用这句你可以很清楚的看到为什么出现不是你想要的结果。
str1 = str.substring(j+1, str.length()-1); //获取子字符串
str = str1;
if(j!=-1)
ch++;
}
return ch;
}
}