我正在尝试创建一个随机生成的字符串。问题是,按照我设置的方式,它继续添加到自身。
我的代码(我从另一个类调用了很多静态变量,所以不要担心那部分)
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为错误带来了光明。这是一个非常简单的修复我忽略的东西
答案 0 :(得分:6)
您对char bt_string;
sprintf(bt_string, " Error: cmd=%02hX, res=%02hX\n", CMD_SEND_CID, res);
bluetooth_println(bt_string);
的每次调用都使用相同的StringBuilder
个实例。请改用新的:
generate()