Comment fonctionne la Roue.programme java et son utilisation de tableaux?


J'ai du mal à comprendre le programme de compteur de roues. En général, je comprends ce que fait le programme, mais je ne comprends pas les spécificités fondamentales de la façon dont il y arrive. J'espère que quelqu'un peut me l'expliquer.

Essentiellement, ce que je ne comprends pas, c'est comment le int[] letterCount = new int [26]; stocke le nombre de caractères dans la dernière partie de la deuxième méthode (je crois que cette section s'appelle une méthode (lignes 20-30) - j'essaie toujours d'obtenir les parties java). Je ne comprenez pas non plus comment letterCount = (lett - 'A'); crée un nombre de chaque lettre et comment cela se lie au int[] letterCount = new int [26];

La façon dont je comprends, c'est qu'il passe par chacun des caractères et décide "D'accord, c'est un 'A' donc (65-65)=0 et c'est aussi un 'A' parce que c'est letterCount [0].

Mais pourquoi letterCount [0] est-il un " A "et comment compte-t-il les" A " s'il ne stocke queletterCount [0], letterCount[1], Nombre de lettres[2], etc. Il me semble que le nombre dans le tableau représente en quelque sorte une lettre de l'alphabet, mais pas comte. J'espère que quelqu'un peut lier ça pour moi.

Le code entier est:

    1: class Wheel {
    2:  public static void main(String[] arguments) {
    3:      String phrase[] = {
    4:          "A STITCH IN TIME SAVES NINE",
    5:          "DON'T EAT YELLOW SNOW",
    6:          "JUST DO IT",
    7:          "EVERY GOOO BOY DOES FINE",
    8:          "I WANT MY MTV",
    9:          "HOW 'BOUT THEM COWBOYS",
    10:             "PLAY IT AGAIN, SAM",
    11:             "FROSTY THE SNOWMAN",
    12:             "ONE MORE FOR THE ROAD",
    13:             "HOME FIELD ADVANTAGE",
    14:             "VALENTINE'S DAY MASSACRE",
    15:             "GROVER CLEVELAND OHIO",
    16:             "WONDERFUL WORLD OF DISNEY",
    17:             "COAL MINER 'S DAIJGHTER",
    18:             "WILL IT PLAY IN PEORIA"
    19:         };
    20:         int[] lettercount = new int[26];
    21:         for (int count = 0; count < phrase.length; count ++} {
    22:         String current = phrase[count];
    23:             char[] letters = current.tOCharArray();
    24:             for (int count2 = 0; count2 < letters.length; count2++){
    25:                 char lett = letters[count2];
    26:                 if ( (lett >= 'A') & (lett <= 'Z') ) {
    27:                     letterCount[lett - 'A']++;
    28:                 }
    29:             }
    30:             }       
    31:         for (char count = 'A'; count <= 'Z'; count++) {
    32:             System.out.print(count + ": " +
    33:                 letterCount[count - 'A'] +
    34:                 "\t");
    35:         }
    36:         System.out.println();
    37: }
    38:}  
Author: Benjamin, 2017-02-17

1 answers

letterCount[lett - 'A'] - c'est un membre du tableau letterCount.

Ce tableau a 26 membres, au début tous sont 0.

lett est de type char. Quand vous faites (char - char) vous recevez int.

Donc, par exemple lett est 'S' maintenant. Le code de " S "est 83, et le code de" A " est 65. Nous avons donc maintenant letterCount[18] est responsable du comptage "S".

Au début, c'était 0. Après letterCount[18]++; il devient 1, etc.

Dans cette partie:

for (char count = 'A'; count <= 'Z'; count++) {
    System.out.print(count + ": " + letterCount[count - 'A'] + "\t");
}

Quand count devient 'S', nous avons à nouveau letterCount['S' - 'A'] (18!), donc letterCount NE stocke PAS de lettres, il stocke la "différence" entre chaque lettre et "A".

Il y a un code formaté:

class Wheel {
    public static void main(String[] arguments) {
        String phrase[] = {
                "A STITCH IN TIME SAVES NINE",
                "DON'T EAT YELLOW SNOW",
                "JUST DO IT",
                "EVERY GOOO BOY DOES FINE",
                "I WANT MY MTV",
                "HOW 'BOUT THEM COWBOYS",
                "PLAY IT AGAIN, SAM",
                "FROSTY THE SNOWMAN",
                "ONE MORE FOR THE ROAD",
                "HOME FIELD ADVANTAGE",
                "VALENTINE'S DAY MASSACRE",
                "GROVER CLEVELAND OHIO",
                "WONDERFUL WORLD OF DISNEY",
                "COAL MINER 'S DAIJGHTER",
                "WILL IT PLAY IN PEORIA"
        };

        int[] letterCount = new int[26];

        for (int count = 0; count < phrase.length; count++) {
            String current = phrase[count];
            char[] letters = current.toCharArray();
            for (int count2 = 0; count2 < letters.length; count2++) {
                char lett = letters[count2];
                if ((lett >= 'A') & (lett <= 'Z')) {
                    letterCount[lett - 'A']++;
                }
            }
        }

        for (char count = 'A'; count <= 'Z'; count++) {
            System.out.print(count + ": " + letterCount[count - 'A'] + "\t");
        }

        System.out.println();
    }
}
 0
Author: Pavlo Plynko, 2017-02-17 17:05:37