黑马程序员技术交流社区
标题:
统计一个字符串中每个字符的出现次数。
[打印本页]
作者:
jsczymm
时间:
2015-8-23 00:08
标题:
统计一个字符串中每个字符的出现次数。
本帖最后由 jsczymm 于 2015-8-23 00:15 编辑
大家帮我看看我这代码的问题在哪?
QQ图片20150823001144.png
(122.24 KB, 下载次数: 0)
下载附件
2015-8-23 00:15 上传
Demo
作者:
jsczymm
时间:
2015-8-23 00:12
本帖最后由 jsczymm 于 2015-8-23 00:16 编辑
输出结果:黑化肥发黑不发灰,灰化肥发灰不发黑灰1 化1
不1
肥1
黑1
,1
发1
作者:
vipsong
时间:
2015-8-23 11:05
package com.itheima.test;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class FindStringTimes {
public static void main(String[] args) {
String str = "黑化肥发黑不发灰,灰化肥发灰不发黑灰";
//将字符串转换成字符数组
char[] chs = str.toCharArray();
//定义一个Map集合,存储数据,键为字符,值为出现次数
Map<Character, Integer> map = new TreeMap<Character, Integer>();
//遍历数组,
for (int i = 0; i < chs.length; i++) {
int count = 1;//定义初始化出现次数
Integer value = map.get(chs[i]);//获取字符键对应的值
if (value != null) {//存储时,如果值(出现次数)不为空
count = value + 1;//则计数器加1次
}
map.put(chs[i], count);//将字符键,对应次数存放到集合中
}
//迭代集合方法1
Set<Map.Entry<Character, Integer>> entry_Set = map.entrySet();
Iterator<Map.Entry<Character, Integer>> it = entry_Set.iterator();
while (it.hasNext()) {
Map.Entry<Character, Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
System.out.println(ch + ":::" + value);
}
//方法2
for (Character ch : map.keySet()) {
Integer value = map.get(ch);
System.out.println(ch+".."+value);
}
//方法3
for(Map.Entry<Character, Integer> me : map.entrySet()){
Character ch = me.getKey();
Integer value = me.getValue();
System.out.println(ch+"=="+value);
}
}
}
复制代码
运行结果
,:::1
不:::2
化:::2
发:::4
灰:::4
肥:::2
黑:::3
,..1
不..2
化..2
发..4
灰..4
肥..2
黑..3
,==1
不==2
化==2
发==4
灰==4
肥==2
黑==3
复制代码
作者:
vipsong
时间:
2015-8-23 12:28
package com.itheima.test;
import java.util.HashMap;
import java.util.Map;
public class FindStringTimes2 {
public static void main(String[] args) {
String str = "黑化肥发黑不发灰,灰化肥发灰不发黑灰";
Map<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < str.length(); i++) {
String key = str.charAt(i) + "";
Integer value = 1;
if (map.get(key) == null) {
map.put(key, value);
} else {
value = map.get(key);
value++;
map.put(key, value);
}
}
for (String str1 : map.keySet()) {
Integer value = map.get(str1);
System.out.println(str1 + "::" + value);
}
}
}
复制代码
21行
作者:
至尊幽蓝
时间:
2015-8-23 13:34
if(m.get(str.charAt(i))==null)
应改为:
if(m.get(str.charAt(i)+"")==null)或
if(m.get(key)==null)
作者:
keto
时间:
2015-8-23 16:44
这个很重要,建议多练习~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2