-1

我必须计算一个文本区域中的所有字母并将结果输出到另一个文本区域。

我可以做计数部分,但我无法将结果显示在另一个文本区域中。它只输出数组中的最后一项。

  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");
    }
}
4

2 回答 2

2

你想append,没有setText

setText正是这样做的:设置文本。追加...好吧,追加。


不相关,但代码本质上是不可读的。请适当缩进。

于 2013-04-14T20:13:53.710 回答
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 中的所有元素,它就有结果。

希望能帮助到你。

于 2013-04-14T20:37:38.023 回答