私はJavaスキャナーを使用してキーボードからテキストの文字列を入力し、プログラムにazを出力するテーブルを作成させ、入力された文字列内で見つかった各文字の番号を表示しています。(文字の頻度)
私のドライバー/メインクラス
import java.util.*;
public class LetterDriver{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
LetterProfile profile = new LetterProfile();
String tScan = " ";
int numReturns = 0;
while(numReturns < 2){
tScan = s.nextLine();
if (tScan.length() == 0){
numReturns++;
}
else{
profile.countChars(tScan);
numReturns = 0;
}
}
profile.printResults();
}
}
マイプロファイルクラス
public class LetterProfile {
int score[] = new int [26];
public void countChars (String s) {
s = s.toLowerCase();
char a = 'a';
for (int i = 0; i < s.length(); i++) {
int next = (int)s.charAt(i) - (int) a;
if ( next<=26 && next >= 0)
score[next]++;
}
}
public int largestLength() {
int largest = 0;
int largestindex = 0;
for(int a = 0; a<26; a++) {
if(score[a] > largest) {
largest = score[a];
largestindex = a;
}
}
return (char)largestindex;
}
public void printResults() {
largestLength();
System.out.println(("Most Frequent") + (" :") + largestLength());
}
}
プログラムはコンパイルされ、実行すると入力を入力できますが、出力されるのは数字の形式で最も頻繁に使用される文字だけです(配列は0〜25であり、0 = a、1であるため) = b)
基本的に、私がやろうとして苦労しているのは、コードの横に文字の頻度を表示しながら、azのテーブルを出力させることです。これを行う簡単な方法はありますか?
ありがとう。