2013-04-14 40 views
-1

我必須計算一個文本區域中的所有字母,並將結果輸出到另一個文本區域。嘗試將數組的結果顯示到textarea

我可以做計數部分,但我不能得到結果顯示在另一個textarea。它只輸出數組中的最後一項。

String str=enterTextArea.getText(); 

char[]myArry = str.toCharArray(); 
for(int counter =0;counter<myArry.length;counter++){ 
    char ch= myArry[counter]; 
    int count=0; 
    for (int i=0; i<myArry.length; i++){ 
     if (ch==myArry[i]) 
      count++; 
    } 
    boolean flag=false; 
    for(int j=counter-1;j>=0;j--){ 
     if(ch==myArry[j]) 
      resultTextArea.setText(ch + ":"+"\t"+count + "\n"); 
     flag=true; 
    } 
    if(!flag){ 

     resultTextArea.setText(ch + ":"+"\t"+count + "\n"); 
    } 
} 
+0

有人通過編輯或代碼破壞了OP的代碼真的是這樣嗎?這根本不會被編譯。看看(ch)循環(j)。 – Kent

+0

做了另一個編輯,希望這是OP的原始 – Kent

+0

@Kent看着[編輯歷史](http://stackoverflow.com/posts/16003817/revisions)建議唯一一個更改代碼的人就是你。 OP - 爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

2

你想use append,不setText

setText確實如此:設置文本。追加...好吧,追加。


不相關,但代碼實質上是不可讀的。請適當縮進。

+0

太棒了。回答戴夫。我甚至沒有考慮追加它.. 工作喜歡GANGBUSTERS! 感謝100萬 – user2280437

1

除了textArea.append之外,您的實現邏輯也有問題。即使固定顯示部分,也不會打印正確的結果。

既然你說這是你的類的任務,我只是不解決這些問題,只是指出來:

  • for循環for(int i=0;...)倒不如改爲for(int i=counter..) or counter+1,取決於如何將你增加了計數。否則有些字符會被計數很多次。想想這個字符串:ababab...[ab]x10..ab正確的結果是a:10 and b:10。你的邏輯不會打印我的想法。

  • 問題可能在單個被解決for循環用哈希表狀數據結構:

你環路從第一元件的陣列中,如果在散列表中char,只是++它的價值,否則把一個新的元素放入該HT,即char作爲鍵,1作爲值。這個HT可以在循環之外聲明。循環遍歷整個數組後,您只需打印HT中的所有元素,就會得到結果。

希望它有幫助。