将26个整数的数组转换为char(字母表)

时间:2013-03-19 23:55:53

标签: java

我正在使用java扫描程序从键盘输入文本字符串,然后让我的程序创建一个输出a-z的表格,并显示输入字符串中找到的每个字母的数量。 (字母频率)

我的司机/主要班级

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)

基本上我遇到的麻烦就是让我的代码输出一个a-z表,同时显示旁边的字母频率。有没有一种简单的方法来完成这项工作?

感谢。

2 个答案:

答案 0 :(得分:2)

我不确定我理解 - 当然它所做的就是打印最频繁的字母 - 这就是printResults方法所做的一切。

只需遍历score数组并打印相应字母旁边的每个分数,您就应该拥有整个频率表。

将此添加到printResults方法中已有的代码中。结果是它将首先打印最常用的字母,然后是字母频率列表,从数字1开始。

for (int i = 0; i < score.length; i++) {
    System.out.println( (i+1) + ": " + score[i]);
}

例如:

Most frequent: e
1: 5
2: 0
3: 2
4: 0
5: 15
...

等。

答案 1 :(得分:0)

试试这个:

for (int i = 0; i<score.length; i++){
System.out.println(score[i]);
}

另外,请给this一个阅读以熟悉语句。