这里是一道java找错题,看看你能找到几个错:
我首先在android环境下,做了个调用StringReplace类的例子,找到了几个错误:
1,s 第一次使用时没有初始值
2,result 没有初始化
3,replace()函数,没有返回值
4,测试函数中,调用replace()函数时,需要先生成类的对象,才能调用。要不就改成static的。
5,replace()调用,缺一个参数
6,最后的打印,应该是replace()方法的返回值。
在android下调试,改错后如下:
public class StringReplace{
public String replace(String str, String pattern, String replace){
int s = 0;
int e=0;
StringBuffer result=new StringBuffer();
while((e=str.indexOf(pattern,s))>0){
result.append(str.substring(s,e));
result.append(replace);
s=e+pattern.length();
}
result.append(str.substring(s));
return result.toString();
}
}
public void StringReplaceTest(){
String scource = "i love java!";
System.out.println("原来的:"+scource);
StringReplace strReplace = new StringReplace();
String str=strReplace.replace(scource,"o","a");
System.out.println("结果:"+str);
}
据说是总共有10个错误,那么其他的错误在哪里呢?
我想了想,应该是环境不同,我不是java环境,在android下编译的。那么,就完全按照原题的形式来一遍吧,果然又发现了几个问题:
7,StringReplace 之前,需要有class
8,main()之前,需要有 static void
9,变量名写错:scource 应该改为 source
10,同一个java文件中,只能有一个public声明的class,应该去掉StringReplace前面的public
最后如下:
import java.lang.*;
class StringReplace{
public String replace(String str, String pattern, String replace){
int s = 0;
int e=0;
StringBuffer result=new StringBuffer();
while((e=str.indexOf(pattern,s))>0){
result.append(str.substring(s,e));
result.append(replace);
s=e+pattern.length();
}
result.append(str.substring(s));
return result.toString();
}
}
public class StringReplaceTest{
public static void main(String[] args){
String scource = "i love java!";
System.out.println("原来的:"+scource);
StringReplace strReplace = new StringReplace();
String str=strReplace.replace(scource,"o","a");
System.out.println("结果:"+str);
}
}
由于本人Java水平有限,所提供的答案,只是用于参考,对于有疑问的同学,欢迎讨论!