2016-12-21 1 views
-1

현재 임의 생성 문자열을 만들려고합니다. 문제는, 제가 설정 한 방식으로 계속해서 추가되는 것입니다.변환 된 문자열이 계속 추가되는 이유

내 코드 I 2로 길이를 설정하면 내 로그에이 같이 보일 것이다

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 
    } 
} 

(그래서 그 부분에 대해 걱정하지 마십시오 다른 클래스에서 정적 변수를 많이 전화 했어) :

DF DFCA DFCAEF 대신에 내 원하는 출력의

:

DF CA

가 어떻게이 문제를 해결 할 EF? (나는 이것이 어쩌면 어리석은 질문이라는 것을 알고있다. 그러나 그것은 늦었고 코드를 통해 내 눈과 두뇌에 상처를 입힌다.)

편집 - shmosel은 무엇이 잘못되었는지 밝혀냈다. 그것은 나를 바라 보는 아주 간단한 수정이었습니다.

답변

6

generate()을 호출 할 때마다 동일한 StringBuilder 인스턴스를 사용하고 있습니다. 대신 신선한 것을 사용하십시오 :

+0

또는 사용하기 전에 지우십시오. –

+0

나는 그것을 어떻게 놓쳤는 지 전혀 모른다! 고맙습니다! – CarbonZonda

관련 문제