Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Explicación del programa

Hola, encontré un programa el cúal hace exactamente lo que necesito. Lo que tengo dudas sobre el funcionamiento. El programa lo que hace es pedir una cadena de carácteres y mostrar cuantas veces aparece cada caracter individualmente.

import java.util.Scanner;
public class contar {

public static void main(String[]args){
Scanner teclado = new Scanner( System.in);
int i;
System.out.print( "Escribe una palabra: ");
String frase = teclado.nextLine();
int cont[] = new int[26];

for(i = 0; i < frase.length(); i++){
char c = Character.toLowerCase( frase.charAt(i));
if(c >= 'a' && c <= 'z' )
cont[c - 'a']++;
}
for(i = 0; i < 26; i++)
if(cont[i] > 0)
System.out.println( (char)(i + 'a') + ": " + cont[i]);
}
}

No entiendo exactamente lo que hace en:
if(c >= 'a' && c <= 'z' )
cont[c - 'a']++;

Si alguien pudiera explicarmelo. Gracias

febrero 19, 2014 | Unregistered Commentersay

Buenas,

Primero fijate que int cont[] = new int[26]; guarda un array de enteros para cada una de las 26 letras del alfabeto.
[0] => 0 (Ocurrencias de la letra 'a')
[1] => 0 (Ocurrencias de la letra 'b')
......

Luego ejecuta este codigo:
System.out.println((int) 'a');

Te da 97? Fijate entonces en esta tabla: http://es.wikipedia.org/wiki/ASCII

Reflexiona sobre todo ello un poco y llegaras tu mismo a la solucion.


Un saludo

febrero 19, 2014 | Unregistered CommenterUnoPorAhi