-1

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

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そのハッシュテーブルにある場合は最初の要素から配列をループし、++その値だけをループcharします。この HT は、ループの外で宣言できます。配列全体をループした後、HT からすべての要素を出力するだけで、結果が得られます。

それが役に立てば幸い。

于 2013-04-14T20:37:38.023 に答える