public class PassAugument {
String str1;
StringBuffer str2;
PassAugument(String str1,StringBuffer str2){
this.str1=str1;
this.str2=str2;
}
void stringAppend(String a) {
this.str1=this.str1+a;
System.out.println("调用void stringAppend(String a)后前tring输出为:"+this.str1);
}
String stringAppendRet(String a) {
this.str1=this.str1+a;
System.out.println("调用String stringAppendRet(String a)前string输出为:"+this.str1);
return this.str1;
}
void stringBfAppedn(StringBuffer a) {
this.str2=this.str2.append(a);
System.out.println("调用void stringBfAppedn(StringBuffer a)前stringbuffer输出为"+this.str2);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//验证String类
String string=new String("We are ");
String strr=new String("family");
string.stringAppend(strr);
System.out.println("调用void stringAppend(String a)后string输出为:"+string);
string.stringAppendRet("friends");
System.out.println("调用String stringAppendRet(String a)前string输出为:"+this.str1);
//验证StringBuffer类
StringBuffer stringbuffer=new StringBuffer("We are ");
string.stringBfAppedn("lovers");
System.out.println("调用void stringBfAppedn(StringBuffer a)后stringbuffer输出为:"+stringbuffer);
}
}
以上代码存在很多问题,请找一找错误并且,修改一下吧。
-
string.stringAppend(strr);
这行代码中,string
是String
类型的对象,而stringAppend
方法是PassAugument
类的方法,不是String
类的方法。因此,你不能在String
类型的对象上直接调用stringAppend
方法。 -
同理,
string.stringAppendRet("friends");
也不正确,因为stringAppendRet
也不是String
类的方法。 -
在
string.stringBfAppedn("lovers");
中,你同样试图在String
类型的对象上调用PassAugument
类的方法,这也是不正确的。 -
在
main
方法中,你并没有创建PassAugument
类的实例,因此即使stringAppend
、stringAppendRet
和stringBfAppedn
是PassAugument
类的方法,你也无法直接调用它们,除非你先创建PassAugument
的一个实例。 -
在
stringBfAppedn
方法中,System.out.println
打印的字符串中的文字 "调用void stringBfAppedn(StringBuffer a)前stringbuffer输出为" 是不准确的。应该是 "调用void stringBfAppedn(StringBuffer a)后stringbuffer输出为",因为你是在方法执行后打印输出。 -
stringBfAppedn
方法中,this.str2=this.str2.append(a);
这行代码是多余的,因为StringBuffer
的append
方法会修改原对象并返回该对象。你只需要this.str2.append(a);
就可以了。 -
在
stringAppendRet
方法中,System.out.println
打印的字符串 "调用String stringAppendRet(String a)前string输出为:" 是不准确的。应该是 "调用String stringAppendRet(String a)后string输出为:",因为你是在方法执行后打印输出。
要修复这些问题,你需要先创建 PassAugument
类的实例,然后使用该实例来调用方法。同时,你需要确保调用方法的对象类型是正确的。此外,还需要修正打印语句中的文本错误。
面是修改后的 main
方法的一个例子:
public static void main(String[] args) {
// 创建PassAugument类的实例
PassAugument passAugument = new PassAugument("Initial", new StringBuffer("Buffer"));
// 验证String类,但这里你不能直接修改String对象,需要使用PassAugument的方法
String string = new String("We are ");
String strr = new String("family");
// 这里不能直接调用stringAppend,因为string是String类型,不是PassAugument类型
// 你需要这样做(如果必要的话):
// passAugument.stringAppend(passAugument.str1, strr);
// 然后打印passAugument.str1
// 验证StringBuffer类
StringBuffer stringbuffer = new StringBuffer("We are ");
// 调用PassAugument的stringBfAppedn方法
passAugument.stringBfAppedn(stringbuffer.append("lovers"));
System.out.println("调用void stringBfAppedn(StringBuffer a)后stringbuffer输出为:" + passAugument.str2);
}
因为 stringAppend
和 stringAppendRet
是设计来修改 PassAugument
对象的 str1
属性的,不能直接在 String
类型的 string
上调用它们。如果需要修改 str1
,应该先调用 passAugument
的实例上的这些方法。
另外,这段代码的设计有点混淆,因为它试图将 PassAugument
类的方法与 String
和 StringBuffer
类的使用混合在一起。在实际编程中,通常你会对 String
和 StringBuffer
对象直接调用它们的方法,而不是通过另一个类来间接操作它们。如果 PassAugument
类的目的是封装字符串操作,那么它应该接收和操作它自己的字符串和字符串缓冲区实例,而不是外部提供的实例。
最后修改后的代码:
package third;
public class PassAugument {
String str1;
StringBuffer str2;
PassAugument(String str1,StringBuffer str2){
this.str1=str1;
this.str2=str2;
}
void stringAppend(String a) {
this.str1=this.str1+a;
System.out.println("调用void stringAppend(String a)时string输出为:"+this.str1);
}
String stringAppendRet(String a) {
this.str1=this.str1+a;
System.out.println("调用String stringAppendRet(String a)时string输出为:"+this.str1);
return this.str1;
}
void stringBfAppedn(StringBuffer a) {
this.str2=this.str2.append(a);
System.out.println("调用void stringBfAppedn(StringBuffer a)时stringbuffer输出为"+this.str2);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//验证String类
String string=new String("We are ");
StringBuffer stringbuffer=new StringBuffer("He loves ");
PassAugument passaugument=new PassAugument(string,stringbuffer);
String strr=new String("family");
passaugument.stringAppend(strr);
System.out.println("调用void stringAppend(String a)后string输出为:"+string);
passaugument.stringAppendRet("friends");
System.out.println("调用String stringAppendRet(String a)前string输出为:"+string);
//验证StringBuffer类
StringBuffer stringbufferr=new StringBuffer("flowers");
passaugument.stringBfAppedn(stringbufferr);
System.out.println("调用void stringBfAppedn(StringBuffer a)后stringbuffer输出为:"+stringbuffer);
}
}
have a good day bye?(^\/^)?