【问题标题】:Count and display the occurrences of each of the letters of the alphabet, in alphabetical order using Java使用Java按字母顺序计算并显示每个字母的出现次数
【发布时间】:2014-04-08 14:53:08
【问题描述】:

下午好,我有一段代码可以计算并显示用户输入中每个字母出现的次数。但我需要按字母顺序排列并显示出现频率最高的字母和该字母出现的次数:

package Assessment2;

import java.util.Scanner;

public class test2 {

String str = "Hello World", s = str;
int count = 0;

public void show() {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter String: ");
    String s = input.nextLine();
    System.out.println("****************************");
    while (s.length() > 0) {
        count = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == s.charAt(0))
                count++;
        }
        System.out.println(s.charAt(0) + ": " + count);
        s = s.replace(String.valueOf(s.charAt(0)), "");
    }
}

public static void main(String[] ar) {
    new test2().show();
}
}

【问题讨论】:

  • 看起来您的代码将无限循环,同时尝试仅计算输入的第一个字符出现在输入中的次数。到目前为止,您尝试过什么对其进行排序并显示频率和计数?
  • 同意mike B,你的代码远非你描述的那样......
  • 当它运行时,我得到以下输入字符串:kjb jkn **************************** k: 2 j: 2 b: 1 : 1 n: 1
  • 这似乎不太可能,因为您在打印 ****s 后从未打印任何内容。
  • 我尝试了 sort + Collat​​or,但没有成功。 @Mike 结果在 Eclipse 的控制台窗口中,我 5 分钟前刚刚运行。

标签: java


【解决方案1】:

对于部分,您尝试按字母顺序对它们进行排序: 我们以下 --for currentChar in a--z --for(loop) inputString 中的每个字符 --如果你遇到任何 char = currentChar 那么 --将该字符附加到最终字符串 如果 结束循环 结束

我不得不提一下,如果你知道任何排序算法,最好使用那个例子:气泡

【讨论】:

    【解决方案2】:

    为了按字母顺序排列字母,您需要对其进行排序。您可以编写自己的代码对字符串的字符进行排序,也可以使用Arrays.sort() 对字符数组进行排序。

    使用char[] charArray = s.toCharArray() 将字符串转换为char 数组,然后使用Arrays.sort(charArray) 按字母顺序对数组进行排序。

    然后您可以遍历数组以查找数组中每个字符的出现次数,然后打印它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2013-09-08
      • 2017-10-13
      相关资源
      最近更新 更多