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

时间:2016-12-21 05:08:49

标签: java string loops stringbuilder

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

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

    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为错误带来了光明。这是一个非常简单的修复我忽略的东西

1 个答案:

答案 0 :(得分:6)

您对char bt_string; sprintf(bt_string, " Error: cmd=%02hX, res=%02hX\n", CMD_SEND_CID, res); bluetooth_println(bt_string); 的每次调用都使用相同的StringBuilder个实例。请改用新的:

generate()