StringBuffer和appender方法

时间:2014-04-17 09:22:01

标签: java stringbuffer appender

我必须制作一个程序,将方法中的参数与Strings相加。程序不工作,我不知道为什么。谢谢你的时间。问题出在main ap.append(" ma kota", 3).append( " i psa", 2);中。我不能改变主要的。

public class Appender {
    private StringBuffer sb;

    public Appender(){
        sb = new StringBuffer();
    }

    public Appender(String s){
        sb = new StringBuffer(s);
    }

    public StringBuffer append(String str, int n) {
        while(n > 0){
            sb.append(str);
            n--;
        }
        return sb;
    }

    public String toString(){
        String s = sb.toString();
        return "" + s;
    }
}

这是我的主要内容:

public class Main {
    public static void main(String[] args) {
        Appender ap = new Appender("Ala");
        ap.append(" ma kota", 3).append( " i psa", 2);
        System.out.println(ap);
        ap.append(" ojej", 3);
        System.out.println(ap);
    }
}

4 个答案:

答案 0 :(得分:2)

append(String appended, int n)方法属于Appender,而不是StringBuilder,因此您必须将其返回,而不是sb

public class HelloWorld{

     public static void main(String []args){
        System.out.println("Hello World");
         Appender ap = new Appender("Ala");
        ap.append(" ma kota", 3).append( " i psa", 2);
        System.out.println(ap);
        ap.append(" ojej", 3);
        System.out.println(ap);
     }
     public static class Appender {
        private StringBuffer sb;

        public Appender(){
            sb = new StringBuffer();
        }

        public Appender(String s){
            sb = new StringBuffer(s);
        }

        public Appender append(String str, int n) {
            while(n > 0){
                sb.append(str);
                n--;
            }
            return this;
        }

        public String toString(){
            return sb.toString();
        }

    }
}

答案 1 :(得分:1)

public StringBuffer append(String str, int n) {
    while(n > 0){
        sb.append(str);
        n--;
    }
    return sb;
}

应该改为

public Appender append(String str, int n) {
    while(n > 0){
        sb.append(str);
        n--;
    }
    return this;
}

因为StringBuffer没有方法append(String s,int n)

答案 2 :(得分:0)

您应该从com.test.FunPrime.Appender.append(String, int)

返回此(当前对象)

喜欢

public Appender append(String str, int n) {
        while(n > 0){
            sb.append(str);
            n--;
        }
        return this;
    }

答案 3 :(得分:-1)

您也可以使用org.apache.commons.lang.StringUtils#repeat

例如重复5次:

  

String result = StringUtils.repeat("重复此字符串",",",5);

没有第二个参数的版本(分隔符",")也可用。