自动判断从键盘输入的字符串中对应字符的出现次数

自动判断从键盘输入的字符串中对应字符的出现次数

分析:

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());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值