2016-12-04 19 views
-4

特定の文字列に表示される文字の頻度を数えたら、これらの値をint配列に格納しようとしています。配列はアルファベット全体で合計26個の値を持ちます。 int変数frequencyは、文字列の各文字の頻度を取得するためのカウンタとして使用されますが、カウントは誤って計算されます。私は間違って何をしていますか?文字列内のアルファベット文字の頻度を数える

int frequency = 0; 
char character; 
alphaCounts = new int[26]; 

for (int i = 0; i < alphabet.length; i++) { 
    frequency = 0; 
    for (int j = 0; j < stringInput.length(); j++) { 
     character = stringInput.charAt(j); 
     if (character == alphabet[i]) { 
      frequency++; 
     } 
    } 

    System.out.println(alphabet[i] + "\t\t" + frequency); 

    // Populating alphaCounts array with the freq values 
    alphaCounts[i] = frequency; 
    i++; 
    System.out.print("\n" + "alphaCounts: " + alphaCounts[i]); 
} 
+4

の周波数を見つけるためのコードの一部ですか? – GurV

+0

@ GurwinderSingh alphaCounts []に周波数値を割り当てようとしている下部が、何らかの理由で動作しません... – user3768997

+1

'doesnt work'とは何を意味していますか?いくつかのエラーが表示されますか?もしそうなら、どんなエラー?スタックを貼り付けます。 – GurV

答えて

0

コードにはいくつか問題があります。あなたの全体的な問題はおそらく、あなたが増加するという事実から来るでしょうi各ループの2回;一度はforループ自体の中で、一度はボディの最後に一回。

もう1つの問題は、alphabetの定義方法です。あなたはASCII文字 'a'から 'z'までの値を含んでいますか?そしてあなたは事件の会計処理をしていますか?別の配列を使用する理由もありません。jの値から適切に調整して直接行くことができます。

ここ
+0

はい。しかし、どのようにしてint配列に値を追加できますか? – user3768997

+0

正しい場合に値を追加する方法。私はそれがカウントを0にするコードの残りの部分だと思う。 – Iluvatar

+0

System.out.println(アルファベット[i] + "\ t \ t" + frequency)を実行すると、私はすべてのアルファベット文字を適切な頻度でa-z、または文字列に現れない場合は0を得ます。しかし、それらの周波数をalphaCounts []に挿入しようとすると、私は0を挿入します。 – user3768997

1

は*何か*が間違っている何のアルファベット

String input = "abcaaasdasdasd"; 
int freqarray[] = new int[26]; 
input = input.toUpperCase(); 
for(int i=0;i<input.length();i++) 
{ 
    freqarray[input.charAt(i)-'A']++; 
} 
関連する問題