Caso: contar el número de caracteres [ejercicio de recopilación de mapas]

Caso: contando el número de caracteres

demanda:

  • El teclado ingresa una cadena de caracteres y se requiere contar el número de ocurrencias de cada cadena de caracteres en la cadena.
  • Ejemplo: entrada de teclado "aababcabcdabcde" y salida en la consola: "a (5) b (4) c (3) d (2) e (1)"

Ideas:

  • Para lograr estadísticas, se requieren dos columnas, por lo que el conjunto de mapas se usa para estadísticas. La clave se puede usar para almacenar el carácter actual y el valor se usa para almacenar el número de ocurrencias del carácter (porque la clave no se puede repetir , el valor se puede sobrescribir)

Implementación:

  1. Primero cree un objeto de escáner para recibir una cadena de estadísticas desde el teclado
  2. Atraviesa la cuerda y juzga al mismo tiempo
    • Obtiene el valor del mapa, si es nulo, significa el primer almacenamiento, es decir, la clave se agrega a la colección y el valor es 1
    • Si el valor obtenido no es nulo, saque el valor y +1 y vuelva a almacenarlo
  3. Estadísticas al final de este ciclo
  4. La cadena empalmada se puede empalmar con el objeto StringBuild para atravesar según sea necesario
  5. El código detallado es el siguiente:

resultado de la operación:
resultado de la operación

package cn.dreamyi.demo1.doudizhu;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class CountNums {
    
    
    public static void main(String[] args) {
    
    
        /**
         * - 案例需求
         *
         *   - 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
         *   - 举例:键盘录入“aababcabcdabcde”  在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
         *
         * -
         */

        //键盘接受一个字符串1
        String line = new Scanner(System.in).nextLine();
        TreeMap<Character, Integer> hm = new TreeMap<>();

        for (int i = 0; i < line.length(); i++) {
    
    
            Character c = line.charAt(i);//得到每个字符

            //首次存取
            if (hm.get(c) == null) {
    
    
                hm.put(c, 1);
            } else {
    
    
                //非首次
                Integer count = hm.get(c);
                count++;
                hm.put(c, count);
            }
        }

        StringBuilder sb = new StringBuilder();
        Set<Character> key = hm.keySet();
        for (Character c :key){
    
    
            sb.append(c).append("(").append(hm.get(c)).append(")");
        }

        String s = sb.toString();
        System.out.println(s);
    }
}

Cuenta pública: a partir de enero [mmk_xgg]
Preste atención al progreso juntos

Preste atención al progreso juntos

Supongo que te gusta

Origin blog.csdn.net/weixin_42143994/article/details/114038280
Recomendado
Clasificación