【问题标题】:Trying to display the results from a array to a textarea尝试将结果从数组显示到文本区域
【发布时间】:2013-04-14 20:10:43
【问题描述】:

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

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

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

【问题讨论】:

  • 有人通过编辑破坏了OP的代码或者代码真的是这样的?这根本不会被编译。看看 for(j) 循环中的ch
  • 做了另一个编辑,希望是OP的原版
  • @Kent 查看edit history 表明唯一更改代码的是您。 OP -- 为了尽快获得更好的帮助,请发帖 SSCCE
  • @AndrewThompson 我在这里看到的是,Cemre 在第三次(来自历史)修订版中编辑了代码。关闭 } 被删除。我所做的只是将 OP 的原始代码复制到我的 vim 中,然后做了一个 gg=G 然后粘贴为新的编辑......

标签: java swing jtextarea


【解决方案1】:

你想use append,而不是setText

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


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

【讨论】:

  • 太棒了。回答戴夫。我什至没有考虑附加它.. 像黑帮一样工作!感谢一百万
【解决方案2】:

除了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 中的所有元素,即可得到结果。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2013-10-09
    • 2018-09-23
    相关资源
    最近更新 更多