0

我下面的代码打印出从扫描仪类输入的字母频率表(字符串中出现的字母数)。除了最后一点,我一切正常。执行时,表格显示字母 az 和出现次数,除了最后一个方法 LargestLength() 方法。由于我的数组'score'使用int [26],而不是使用az,它使用int 0-25。(0=A,1=B 等)到目前为止,我的 LargestLength 方法只显示出现次数最多的数字(而不是字母),但不计算出现次数。

例如,如果我的字符串是“你好”,l 出现频率最高,所以我希望它显示“最常见:l 2”,但我的代码显示“最常见: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

如果我的字符串是“你好”,l 出现频率最高,所以我希望它显示“最频繁:l 2”,但我的代码显示“最频繁:11”(11 = L)。我将如何解决这个问题?

简单的:String.valueOf((char)(number + 'A'));

于 2013-03-20T02:53:44.193 回答