Java 尝试将结果从数组显示到文本区域
我必须计算一个文本区域中的所有字母,并将结果输出到另一个文本区域 我可以做计数部分,但我不能让结果显示在另一个文本区域。它只输出数组中的最后一项Java 尝试将结果从数组显示到文本区域,java,swing,jtextarea,Java,Swing,Jtextarea,我必须计算一个文本区域中的所有字母,并将结果输出到另一个文本区域 我可以做计数部分,但我不能让结果显示在另一个文本区域。它只输出数组中的最后一项 String str=enterTextArea.getText(); char[]myArry = str.toCharArray(); for(int counter =0;counter<myArry.length;counter++){ char ch= myArry[counter]; int count=0;
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");
}
}
String str=enterTextArea.getText();
char[]myArry=str.toCharArray();
对于(int counter=0;counter您想要的,而不是setText
)
setText
正是这样做的:设置文本。追加…嗯,追加
不相关,但代码本质上无法读取。请适当缩进。除了文本区域。追加之外,您的实现的逻辑也有问题。即使您修复了显示部分,它也无法打印正确的结果
既然你说这是你们班的作业,我就不去修正它们,只是指出它们:
- for(int i=0;…)
的for循环最好改为for(int i=counter..)或counter+1
,这取决于您如何增加计数。否则一些字符会被计数多次。请考虑以下字符串:abababab…[ab]x10..ab
正确的结果将是a:10和b:10
。我认为您的逻辑不会打印出这一点
该问题可以通过类似哈希表的数据结构在单for循环中解决:
您从第一个元素循环数组,如果该哈希表中的char
,只需++
它的值,否则将一个新元素放入该HT中,char
作为键,1作为值。这个HT可以在循环之外声明。在您循环整个数组后,您只需打印HT中的所有元素,它就具有苏丹
希望能有帮助。太棒了。回答Dave。我甚至没有想过附加它。工作起来像帮派杀手一样!感谢百万人有人通过编辑破坏了OP的代码,或者代码真的是这样的?这根本不会被编译。看看(j)中的ch
loop.做了另一次编辑,希望这就是OP的original@Kent查看这些代码表明,唯一更改代码的人是您。OP——为了更快地获得更好的帮助,请发布一条消息。@andrewhompson我看到的是,Cemre在3日重新编辑了代码(来自历史记录)修订版。一个关闭的}
被删除..我所做的只是将OP的原始代码复制到我的vim中,并做了一个gg=G
然后粘贴为新编辑。。。。