0

以下のコードは、スキャナー クラスから入力された文字頻度表 (文字列内の文字の出現回数) を出力します。最後のビットを除いて、すべてが正しく機能しています。実行されると、テーブルには a ~ z の文字と、最後のメソッド LargestLength() メソッドを除く出現回数が表示されます。私の配列 'score' は int[26] を使用するため、az を使用する代わりに ints 0-25 を使用します。(0=A、1=B など) 現時点では、LargestLength メソッドは (文字ではなく) 数字のみを表示し、出現回数はカウントしません。

たとえば、文字列が「Hello」の場合、l が最も頻繁に表示されるため、「Most Frequent: l 2」と表示したいのですが、私のコードでは「Most Frequent: 11」(11 = L) と表示されます。 . これを修正するにはどうすればよいですか?

プロファイル クラス。

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();

       for (int i = 0; i < score.length; i++) {
    System.out.println( (char)(i+97) + ": " + score[i]);
       }
  System.out.println(("Most Frequent") + (": ") + largestLength());
    }
}

少しわかりにくい説明ですが、何か助けていただければ幸いです。

4

1 に答える 1

4

私の文字列が「Hello」の場合、l が最も頻繁に表示されるので、「Most Frequent: l 2」と表示したいのですが、私のコードでは「Most Frequent: 11」(11 = L) と表示されます。これを修正するにはどうすればよいですか?

単純:String.valueOf((char)(number + 'A'));

于 2013-03-20T02:53:44.193 に答える