2

ユーザーから文字列を読み取り、文字列内の文字を出現回数とともに出力するプログラムをコーディングする必要がある割り当てを行っています。たとえば、「He​​llo world」では「h=1 e=1 l=3 o=2 ... など」と出力する必要がありますが、私の場合は「hello world」と合計文字数のみを書き込みます。hashmap 関数は使用できず、配列のみを使用できます。以下の記述されたコードから優先機能を取得する方法について、誰かがヒントを教えてくれますか? 書き込まれた入力を配列に保存する方法が正確にわかりません。

これまでの私のコードは次のとおりです。

public class CountLetters {
    public static void main( String[] args ) {
        String input = JOptionPane.showInputDialog("Write a sentence." );
        int amount = 0;
        String output = "Amount of letters:\n";

        for ( int i = 0; i < input.length(); i++ ) {
            char letter = input.charAt(i);
            amount++;
            output = input;
        }
        output += "\n" + amount;
        JOptionPane.showMessageDialog( null, output,
                             "Letters", JOptionPane.PLAIN_MESSAGE ); 
    }
}
4

5 に答える 5

2
  • 長さ 26 の整数配列を作成します。
  • 文字列の各文字を繰り返し、各文字に関連付けられた配列に格納されている値をインクリメントします。
  • 各文字の配列内のインデックスは、x - 'a'小文字と大文字のによって計算されます。x - 'A'ここxで、 は特定の文字です。
于 2013-10-03T16:08:03.093 に答える
0

最初の要素が「a」、2番目の「b」などを表す配列を作成できます。小文字と大文字を区別する必要がある場合は、最後に追加できます。この配列は、最初はすべての値が 0 になります。次に、文を繰り返し処理し、配列で必要な値を増やします。最後に、> 0 のすべての値を出力します。簡単ですか?

さらにサポートが必要な場合はお知らせください

于 2013-10-03T16:08:22.020 に答える
0

いいえ、26 個の配列を作成しないでください。文字列に予期しない文字が含まれていると、これが壊れます。(ä, ö, ü 誰か?) 私が指摘したように、私のコメントはマップを使用しています。これは、考えられるすべての文字で機能します。

于 2013-10-03T16:17:10.550 に答える
0

java.io.* をインポートします。

public class CharCount {

public static void main(String[] args) throws IOException
{
    int i,j=0,repeat=0;
    String output="",input;
    char c=' ';
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("enter name ");
    input=br.readLine();
    System.out.println("entered String ->\""+input+"\"");
    input=input.toLowerCase();

    for(i=0;i<input.length();i++)
    {
        for(j=0;j<output.length();j++)
        {
            if(input.charAt(i)==output.charAt(j) || input.charAt(i)==c)
            {
                repeat=1;
                break;
            }
        }
        if(repeat!=1)
        {
            output=output+input.charAt(i);
        }
        repeat=0;
    }

    System.out.println("non-reepeated chars in name ->\""+output+"\"");

    int count[]=new int[output.length()];
    for(i=0;i<output.length();i++)
    {
        for(j=0;j<input.length();j++)
        {
            if(output.charAt(i)==input.charAt(j))
                count[i]=count[i]+1;
        }
    }
    for(i=0;i<output.length();i++)
        System.out.println(output.charAt(i)+"- "+count[i]);
}

}

于 2014-05-05T12:10:06.310 に答える