黑马程序员技术交流社区
标题:
统计字符串中的每个字母出现次数—— 为什么没有结果
[打印本页]
作者:
王延龙
时间:
2013-7-26 01:14
标题:
统计字符串中的每个字母出现次数—— 为什么没有结果
本帖最后由 杨兴庭 于 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;
}
}
复制代码
可不可以有更简单的方法
作者:
草貌路飞
时间:
2013-7-26 01:49
没有结果?我运行是有的呀..不知道有没有更简单的方法,但经常用的是Map,把字符作为key,次数为value,第一次put,value为1,后面就是如果map里有的话取出来++在put进去。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2