2016-12-21 6 views
-1

現在、ランダムに生成された文字列を作成しようとしています。問題は、私はそれをセットアップしている方法で、それ自体に追加し続けています。変換された文字列が引き続き付加されます

私のコード(私はその部分については心配しないでください他のクラスから静的変数の多くを呼んでいる)

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は何が間違っていたのかを明らかにしました。

答えて

6

generate()を呼び出すたびに同じStringBuilderインスタンスを使用しています。代わりに新しいものを使用してください:

+0

または使用前に少なくともクリアしてください。 –

+0

どのように私はそれを逃したのか分かりません!ありがとうございました! – CarbonZonda

関連する問題