チャーリー:
この私のプログラムの特定の方法は、文字列内のアルファベットのすべての文字の頻度のアレイを取り込むように設計されて、例えば{3,5、2、1 ...アレイ26個の項目を有するまで}
この方法は、その後、例えば0.2(、最も頻度の高い文字が表示されますが(のは、文字Eは、文字列に27回現れるとしましょう)回の量を分割し、文字列の中でそれを相対頻度を計算する文字の合計数で割りになっています文字列の20%を意味する)この手紙です。
別の方法でmostFrequentCharacter。
私はちょうど彼らが正しく計算されているテストするための出力(mostFrequentLetter(frequencyArray、25))とtotalCharsを持っている、と彼らは私のサンプルの文字列をそれぞれ4および34です。私は相対頻度を計算するときに0.11764705882に等しくなければならない場合しかし、それは等しく
何が私が間違っているのでしょうか?
public static double relativeFrequency(int[] frequencyArray){
int totalChars = 0;
for (int i = 0; i < frequencyArray.length; i++){
totalChars = totalChars + frequencyArray[i];
}
System.out.println (mostFrequentLetter(frequencyArray, 25));
System.out.println(totalChars);
return (mostFrequentLetter(frequencyArray, 25) / totalChars );
}
Oleksi:
あなたは2つの整数を分割すると、あなたの結果も整数ではなく、二重のです。あなたがより多くを検索したい場合はこれを、「整数の除算」として知られています。数字を引き起こしていること<1を代わりに0に変身し、ダブルスでの滞在に数学を強制的に倍増するキャストしてみてください。
return ((double) mostFrequentLetter(frequencyArray, 25) / totalChars );