为什么我转换后的字符串继续追加

Why does my converted string continue to append

我目前正在尝试创建一个随机生成的字符串。问题是,按照我设置它的方式,它会继续添加到自身。

我的代码(我从另一个 class 调用了很多静态变量,所以不用担心那部分)

    class Generate1 extends Thread{
    @Override
    public void run() {
        while(RUNNING == true){
                generate();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    private void generate(){
        for(int i=0;i<length;i++){
            int decider = rando.nextInt(6)+1;

            if(decider == 1){
                sb1.append("A");
            }
            if(decider == 2){
                sb1.append("B");
            }
            if(decider == 3){
                sb1.append("C");
            }
            if(decider == 4){
                sb1.append("D");
            }
            if(decider == 5){
                sb1.append("E");
            }
            if(decider == 6){
                sb1.append("F");
            }
        }
        Log.d("PSS",sb1.toString()); // this here is the stringbuilder being outputted 
    }
}

如果我将长度设置为 2,在我的日志中它看起来像:

DF DFCA DFCAEF

而不是我想要的输出:

DF CA EF

我该如何解决这个问题? (我知道这可能是一个愚蠢的问题,但已经晚了,通过代码思考伤害了我的眼睛和大脑)

编辑 - shmosel 指出了问题所在。对我来说,这是一个非常简单的修复,忽略了一些东西

您对 generate() 的每次调用都使用相同的 StringBuilder 实例。用一个新的代替:

private void generate(){
    StringBuilder sb1 = new StringBuilder(length);
    // ...
}