自动判断从键盘输入的字符串中对应字符的出现次数
分析:
1、使用Scanner来获得用户输入的字符串。
2、创建Map集合,key是字符串中的字符,value是字符的个数。
3、遍历字符串,获取每一个字符。
4、判断获取到的字符是否存在于Map集合中
key存在:
通过字符(key),获取value(字符个数)
value++;
put(key,value);把新的value存入Map集合中,注意:因为Map的key是不能重复的。
key不存在:
put(key,1);
在本题目中我选择使用HashMap来作为容器。
首先是输入并新建一个哈希表:
//从键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String in = sc.next();
//新建一个哈希表
HashMap<Character,Integer> hashMap = new HashMap();
下面就要遍历字符串了,但是要判断对应的字符是否存在于哈希表中,如果存在就把其对应的value加一。否则,就把该字符加入到哈希表中,并把其对应的哈希值赋值为1。
遍历字符串方法一:
char[] chars = in.toCharArray();
for (char aChar : chars) {
if (hashMap.containsKey(aChar))
{
Integer value = hashMap.get(aChar);
value++;
hashMap.put(aChar,value);
}
else {
hashMap.put(aChar,1);
}
}
遍历字符串方法二:
char[] array = in.toCharArray();
for (char ch : array) {
//如果存在就其对应的value加1,否则就添加这个key,对应的value=1;
if (hashMap.containsKey(ch)){
Integer value = hashMap.get(ch) + 1;
hashMap.put(ch,value);
}else {
hashMap.put(ch,1);
}
}
输出:
因为 hashMap 重写了 toString 方法,所以可以直接输出。也可以使用迭代器或者增强 for 循环来遍历输出。下面我就用迭代器来输出:
Set<Map.Entry<Character, Integer>> entries = hashMap.entrySet();
Iterator<Map.Entry<Character, Integer>> it = entries.iterator();
while (it.hasNext()){
Map.Entry<Character, Integer> next = it.next();
System.out.println(next.getKey() + "=" + next.getValue());
}
下面给出全部代码:
import java.util.*;
public class Test_Map {
public static void main(String[] args) {
//从键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String in = sc.next();
//新建一个哈希表
HashMap<Character,Integer> hashMap = new HashMap();
//遍历字符串方法一
// char[] chars = in.toCharArray();
// for (char aChar : chars) {
// if (hashMap.containsKey(aChar))
// {
// Integer value = hashMap.get(aChar);
// value++;
// hashMap.put(aChar,value);
// }
// else {
// hashMap.put(aChar,1);
// }
// }
//遍历字符串方法二
char[] array = in.toCharArray();
for (char ch : array) {
//如果存在就其对应的value加1,否则就添加这个key,对应的value=1;
if (hashMap.containsKey(ch)){
Integer value = hashMap.get(ch) + 1;
hashMap.put(ch,value);
}else {
hashMap.put(ch,1);
}
}
//输出
Set<Map.Entry<Character, Integer>> entries = hashMap.entrySet();
Iterator<Map.Entry<Character, Integer>> it = entries.iterator();
while (it.hasNext()){
Map.Entry<Character, Integer> next = it.next();
System.out.println(next.getKey() + "=" + next.getValue());
}
}
}