Java程序,用于计算每个字符在字符串中出现的次数

时间:2014-01-16 17:03:50

标签: java arrays string function

我输入此程序来计算每个字符出现在字符串中的次数。

  import java.util.Scanner;
  public class fre {


public static void main(String[] args) {
    Scanner s=new Scanner (System.in);
    System.out.println("Enter a string");
    String sent = s.nextLine();
    String str=sent.toUpperCase();
    int len=str.length();
    char save[]=new char[len];
    for (int i=0;i<len;i++){

        save[i]=str.charAt(i);


    }
    char a=0;
    int count=0;
    for(int i=0;i<len;i++){

        a=save[i];
        for(int j=0;j<len;j++){
            if(save[j]==a)
                count ++;
            }

            }
    for(int i=0;i<len;i++)
    System.out.println(save[i]+" appears "+count+" number of times");
}

}

代码是非常错误的,有人可以指导我如何使用简单的函数来执行程序并告诉我在这里做错了什么?

6 个答案:

答案 0 :(得分:2)

你可以通过

完成
  • 声明一个包含26个整数的数组(第一个索引指的是A,第二个索引指的是B,依此类推)
  • 只需遍历输入字符串一次,对于遍历字符串的每个字符,增加相应的索引,就可以像int index = inputString [i] -65那样完成;并增加这个指数。
  • 现在遍历你的数组以获得每个角色的数量,你就完成了,希望它有所帮助

答案 1 :(得分:1)

怎么样

  int[] count = new int[256];
  for(int ch; (ch = System.in.read()) >= ' ';)
      count[ch]++;
  for(char ch = 0; ch < count.length; ch++)
      if (count[ch] > 0)
          System.out.println(ch + " appears " + count[ch] + " times");

答案 2 :(得分:0)

您有一个全局count,而每个角色需要一个计数器。

尝试使用Map<Character, Integer>存储字符串中每个字符的出现次数。

答案 3 :(得分:0)

每个角色需要一个单独的计数。现在你正在增加相同的数量。

答案 4 :(得分:0)

如果我理解你想要的是这样的话:

    int count = StringUtils.countMatches("Auto-generated method stub", "e");
    System.out.println(count);

StringUtils是来自apache http://commons.apache.org/proper/commons-lang/

的api

答案 5 :(得分:0)

您还可以使用Collections.frequency(Collection<?> c, Object o)方法来计算集合中元素的数量,因此下面的代码片段会为您提供字符串中的字符数。

String str=s.nextLine().toUpperCase();
         char[] letters=str.toCharArray();
         List<Character> cList = new ArrayList<Character>();
         for(char c : letters) {
             cList.add(c);
         }
         Set<Character> chSet=new HashSet<Character>(cList); //to get unique characters in the list
         for(Character ch:chSet) {
             System.out.println(ch+"          "+Collections.frequency(cList, ch));
         }