Cómo llevar la cuenta de cosas diferentes en una matriz?

Niko:

Me encontré con un código que algunas partes que no entienden. Tiene algo que ver con llevar la cuenta de las cartas en una cadena. He comentado que la parte que no entiendo. Apreciaría cualquier ayuda. ¡Gracias!

Traté de mirar hacia arriba en línea, pero ninguno parece responder a mi pregunta.

public class test2 {
    static int[] inventory;
    public static final int ALPHABET = 26;

    public static void main(String[] args) {
        inventory = new int [ALPHABET];
        String dog = "There goes the dog!";

        int size = count(dog);
        System.out.println(size);

    }

    private static int count(String data) {
        data = data.toLowerCase();
        int size = 0;
        for (int i = 0; i < data.length(); i++) {
            char ch = data.charAt(i);
            if (Character.isLetter(ch)) {
                size++;
                inventory[ch - 'a']++; // this I don't get
            }
        }
        return size;
    }
}
Kartik:
System.out.println(0 + 'c'); //ASCII value of 'c'; will print 99
System.out.println(0 + 'a'); //ASCII value of 'a'; will print 97
System.out.println('c' - 'a'); //Difference of ASCII values of characters; will print 99-97=2

En tu caso

inventory[ch - 'a']++;

chserá un poco de carácter.
ch - 'a'será la distancia de ese carácter de 'a'. Por ejemplo, como se muestra arriba, 'c' - 'a' = 2.
inventory[ch - 'a']apuntará al número en el índice ch - 'a'de la matriz.
inventory[ch - 'a']++incrementará ese valor por 1.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=186855&siteId=1
Recomendado
Clasificación