2010-10-31 4 views
1

niveau: débutantlettres de comptage dans un tableau (java)

Ci-dessous l'extrait fait partie du code qui compte des lettres dans un tableau. Comment dites-vous cela en anglais?

counts[letters[i] - 'a']++ ; 

Je comprends le mécanisme de soustractions mais je suis un peu confus par la manière abrégée d'écrire la lettre compter incrémentation.

code complet:

class CountLettersInArray 
{ 
    public static void main(String[] args) 
    { 
     char[] letters = new char[100] ; 

     for (int i = 0 ; i < 100 ; i++) 
     { 
      letters[i] = RandomCharacter.getRandomLowerCaseLetter() ; 
     } 

     int[] counts = new int[26] ; 

     for (int i = 0 ; i < 100 ; i++) 
     { 
      counts[letters[i] - 'a']++ ; 
     } 

     for (int i = 0 ; i < 26 ; i++) 
     { 
      System.out.print(counts[i] + " ") ; 
     } 

    } 
} 
+1

Êtes-vous confus sur ce qu'il fait? Ou demandez-vous comment vous prononceriez phonétiquement cette expression, i.e * compte le tableau de l'indice de lettres tableau à l'index 'i' moins le littéral' 'a'' incrémenté *? –

Répondre

1

Ce qui se passe ici, est que la lettre un est un char, qui a une valeur entière de 97.

Ainsi, en prenant le caractère valeur, et en soustrayant la valeur ASCII de 'a', il rend la base de tableau nulle. Donc, pour chaque caractère, il incrémente la valeur dans le tableau (rappelez-vous que toutes les valeurs de tableau dans un tableau d'entiers commencent à zéro). Ainsi, il incrémente le nombre de caractères pertinents dans le tableau chaque fois qu'un caractère est trouvé.

+0

merci pour cela! maintenant: "il incrémente la valeur dans le tableau" donc si 'a' est rencontré la première fois, la valeur de count [0] est incrémentée de 1 ce qui donne le compte [0] = 1 – raoulbia

+0

@Baba oui, exactement . – Codemwnci

0

letters[i] est un code ascii qui représente une lettre, disons x. Alors - 'a' fonctionne comme suit: si letters[i] == 'a' alors cela signifiera 0 (parce que x-x = 0). Si letters[i] == 'b' (x + 1) alors cela signifiera 1 (car x + 1-x = 1). Ainsi, vous incrémentez la valeur dans la position letters[i] - 'a'.

Questions connexes