一、需求
从控制台输入一串字符串,统计每种字符出现的个数
二、分析
a) 从前向后一个字符一个字符的看;
b) 如果该字符没有出现过,则记录次数为1,否则在已经出现的次数上+1;
c) 记录的格式是:h:3,f:2;
d) 使用map建立映射;
三、代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public classTest {
public static void main(String[] args) throws Exception {
//从控制台输入一个字符串
Scannersc= newScanner(System.in);
System.out.println("请输入一个字符串:");
Strings = sc.nextLine();
//创建一个Map 用于存储数据
Map<String,Integer>map = new HashMap<String,Integer>();
//将字符与出现次数联系
for(int i = 0; i < s.length(); i++){
StringperStr = s.substring(i, i+1);
if(map.containsKey(perStr)){
Integernum = map.get(perStr);
map.put(perStr, num + 1);
}else{
map.put(perStr, 1);
}
}
//用map输出的两种格式
Set<Map.Entry<String,Integer>> set= map.entrySet();
for(Map.Entry<String,Integer> entry: set){
System.out.println(entry.getKey()+ ":" + entry.getValue());
}
System.out.println("=======================");
Set<String>keys = map.keySet();
for(String key : keys){
System.out.println(key + "--->"+ map.get(key));
}
}
}
四、拓展:
从文件中读入一个字符串,统计各字符个数
将上述代码中
“
Scanner sc= newScanner(System.in);
System.out.println("请输入一个字符串:");
Strings = sc.nextLine(); ”
改为如下代码:
StringBuffer s= newStringBuffer();
BufferedReaderbr = newBufferedReader(newFileReader("d:/aa.txt"));
Stringss = null;
while(null != (ss = br.readLine())){
s.append(ss);
}
br.close();
并在d盘中新建一个名字为aa的txt文件,写入一串字符串
五、执行结果(字符串: i love you)
:2
e:1
u:1
v:1
i:1
y:1
l:1
o:2
=======================
--->2
e--->1
u--->1
v--->1
i--->1
y--->1
l--->1
o--->2