有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我使用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) 个答案

  1. # 1 楼答案

    我不确定自己是否理解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
    ...
    

    等等

  2. # 2 楼答案

    试试这个:

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

    另外,给this读一读,让自己熟悉for语句