计算给定单词中字母的频率

时间:2014-04-22 02:58:58

标签: java arrays

我需要帮助编写一个关于计算给定单词中字母按字母顺序重复多少次的程序。大写和小写字母相等,它也必须适用于数字。例如:

我们必须使用数组和循环。另外,如果给出的单词/数字超过1个,则不得对空间进行计数,如果用户想继续或不继续,也应提示用户。如果没有,那么他们应该输入一个点。'或者当有点的时候。'在这个单词之后,它应该在计算字母后关闭程序。

大学 e:1 i:2 n:1 r:1 s:1 t:1 u:1 y:1

import java.util.Scanner;
import java.lang.Character;
public class Array {

    public static void main(String[] args) {
        Scanner input=new Scanner (System.in);
        int[] letters =new int [26];
        String str= input.nextLine();
        str=str.toLowerCase();

        for (int i=0; i<str.length(); i++)
        {
            letters[i]=0;
        }
        System.out.println(str.length());
        System.out.println(char2int('a'));
        System.out.println(char2int ('D'));
    }

    public static int char2int (char c) {
        return Character.toLowerCase(c)-(int)'a';
    }
}

例如,这就出现了 我
2
0
3个

1 个答案:

答案 0 :(得分:0)

我要给你一个很大的提示,你需要做的是调用一个方法(比如说countLetters),这个方法是一个单词和一个字母 - 这样就可以了,

// Count the "letter"(s) in the word.
public static int countLetters(String word, char letter) {
  int count = 0;
  if (word != null) {
    char lc = Character.toLowerCase(letter);
    for (char c : word.toCharArray()) {
      if (lc == Character.toLowerCase(c)) {
        count++;
      }
    }
  }
  System.out.printf("%s: %d\n",
      String.valueOf(letter), count);
  return count;
}

public static void main(String[] args) {
  String test = "Universe";
  countLetters(test, 'e');
  countLetters(test, 'u');
}

输出

e: 2
u: 1