本帖最后由 杨兴庭 于 2013-7-29 11:03 编辑
- import java.util.Scanner;
- /*
- * 实现需求:统计字符串中的每个字母出现次数,字符串有用户输入;统计在忽略字母大小写的情况下,每个字母出现的次数
- *
- * 解决思路:
- * 1.获取字符串 Scanner方法
- * 2.将字符串中的大写换成小写字母 toLowerCase()方法
- * 3.定义一个countLetter()方法来实现统计功能
- * 3.1 创建一个长度为26的数组
- * 3.2 获取字符串中的字符charAt()
- * 3.3 确定该字符对应的计数器:通过该字符与'a'的距离来判断
- *
- * 4.显示打印结果
- * 4.1将该字符与'a'的距离转换成字母;
- */
- public class CountEachLetter {
- /**
- * @param args
- */
- public static void main(String[] args) {
- //1.获取字符串
- Scanner input = new Scanner(System.in);
-
- System.out.println("输入一组字符:");
-
- String s = input.nextLine();
-
- //2.将字符串转换为小写字符作为参数,调用countLetters()方法来实现功能:统计字母出现次数
-
- int[] counts = countLetters(s.toLowerCase());
-
- //3.显示打印结果
-
- for(int i = 0; i < counts.length; i++){
-
- if(counts[i] != 0){
-
- System.out.println((char)('a'+i)+"-出现次数-"+counts[i]);
- }
- }
- }
- //定义countLetters()方法,封装统计功能
- private static int[] countLetters(String s) {
- //创建一个元素为26的数组容器
- int[] counts = new int[26];
- //遍历字符串
- for(int i = 0; i < s.length(); i++){
- //如果字符为字母;其相应的计数器数组元素加1;
- if(Character.isLetter(s.charAt(i)))
- //以查询字母的统一码 为对应标识
- counts[s.charAt(i) - 'a']++;
- }
-
- return counts;
- }
- }
复制代码 可不可以有更简单的方法
|