我必须统计一个文本区域中的所有字母,然后将结果输出到另一个文本区域。
我可以做计数部分,但我无法将结果显示在另一个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 :(得分:2)
答案 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中的所有元素,就会产生结果。