各位看看下面程序有什么错误,老是和实际的不符 谢了先!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;
}
查找给定字符串中的子串 并返回个数
解决方案 »
- 求一小段代码 把整个文件读取 转换成一行行读取的 非常感谢
- 输入流问题
- 请教 -> Java 反射
- 双击jar让其运行是不是必需设定打开方式?
- char 类型的输出问题
- InstallAnywhere 8 Enterprise 如何打包程序中的参数
- 初学java碰上一个问题,不能定义一个public static final 成员
- 类成员与实例成员有什么联系和区别!
- 三张(其实是2张)表关联的SQL如何写?
- 哪里有java反编译的软件下载?
- 下面程序怎么没有得到网页的内容呢
- Exception in thread "main" java.lang.NullPointerException……………………在线等。。。。。。。
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;
}
}