A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-7-29 11:03 编辑

  1. import java.util.Scanner;

  2. /*
  3. * 实现需求:统计字符串中的每个字母出现次数,字符串有用户输入;统计在忽略字母大小写的情况下,每个字母出现的次数
  4. *
  5. * 解决思路:
  6. * 1.获取字符串        Scanner方法
  7. * 2.将字符串中的大写换成小写字母 toLowerCase()方法
  8. * 3.定义一个countLetter()方法来实现统计功能
  9. *                 3.1 创建一个长度为26的数组
  10. *                 3.2 获取字符串中的字符charAt()
  11. *                 3.3 确定该字符对应的计数器:通过该字符与'a'的距离来判断
  12. *                 
  13. * 4.显示打印结果
  14. *                 4.1将该字符与'a'的距离转换成字母;
  15. */
  16. public class CountEachLetter {

  17.         /**
  18.          * @param args
  19.          */
  20.         public static void main(String[] args) {

  21.                 //1.获取字符串
  22.                 Scanner input = new Scanner(System.in);
  23.                
  24.                 System.out.println("输入一组字符:");
  25.                
  26.                 String s = input.nextLine();
  27.                
  28.                 //2.将字符串转换为小写字符作为参数,调用countLetters()方法来实现功能:统计字母出现次数
  29.                
  30.                 int[] counts = countLetters(s.toLowerCase());
  31.                
  32.                 //3.显示打印结果
  33.                
  34.                 for(int i = 0; i < counts.length; i++){
  35.                         
  36.                         if(counts[i] != 0){
  37.                                 
  38.                                 System.out.println((char)('a'+i)+"-出现次数-"+counts[i]);
  39.                         }
  40.                 }
  41.         }

  42.         //定义countLetters()方法,封装统计功能
  43.         private static int[] countLetters(String s) {
  44.                 //创建一个元素为26的数组容器
  45.                 int[] counts = new int[26];
  46.                 //遍历字符串
  47.                 for(int i = 0; i < s.length(); i++){
  48.                         //如果字符为字母;其相应的计数器数组元素加1;
  49.                         if(Character.isLetter(s.charAt(i)))
  50.                                 //以查询字母的统一码 为对应标识
  51.                                 counts[s.charAt(i) - 'a']++;
  52.                 }
  53.                
  54.                 return counts;
  55.         }

  56. }
复制代码
可不可以有更简单的方法

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

1 个回复

倒序浏览
没有结果?我运行是有的呀..不知道有没有更简单的方法,但经常用的是Map,把字符作为key,次数为value,第一次put,value为1,后面就是如果map里有的话取出来++在put进去。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马