尝试将数组中的结果显示到textarea

时间:2013-04-14 20:10:44

标签: java swing jtextarea

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

我可以做计数部分,但我无法将结果显示在另一个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");
    }
}

2 个答案:

答案 0 :(得分:2)

您想要use append,而不是setText

setText完全相同:设置文本。附加......好吧,追加。


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

答案 1 :(得分: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中的所有元素,就会产生结果。

希望它有所帮助。