miércoles, 15 de enero de 2014

Explicación cadenas 3: contar el número de vocales en una cadena (Ejercicio 52 del boletín)


package ejercicadenas3;

import java.util.Scanner;

/**
*
* @author juan
*/
public class EjerciCadenas3 {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String cadena;
        Scanner leo = new Scanner(System.in);
        int canta=0,cante=0,canti=0,canto=0,cantu=0;
        int longitudCadena;
    
        System.out.println("Introduzca una cadena de caracteres: ");
        cadena=leo.nextLine();
        longitudCadena= cadena.length();
        for (int i = 0; i < longitudCadena; i++) {
            switch (cadena.charAt(i)) {
                case 'a':
                    canta++;
                    break;
                case 'e':
                    cante++;
                    break;
                case 'i':
                    canti++;
                    break;
                case 'o':
                    canto++;
                    break;
                case 'u':
                    cantu++;
                    break;
            
            }
        
        }
        System.out.printf("Hay %d a, %d e, %d i, %d o, %d u",canta,cante,canti,canto,cantu);

    }
}
Otras soluciones, éstas ya con matrices: public static void main(String[] args) {
        Scanner leo = new Scanner(System.in);
        String cadena;
        String vocal = "aeiou";
        int vocales[] = new int[5];
        int cont=0,pos;
       
        System.out.println("Introduzca una cadena");
        cadena= leo.nextLine();
        for (int i = 0; i < cadena.length(); i++) {
           pos = vocal.indexOf(cadena.toLowerCase().charAt(i));
           if (  pos != -1  ) ++vocales[pos];
        }
        for (int i = 0; i < 5; i++) {
            System.out.print(vocal.charAt(i));
            System.out.println(": "+vocales[i]);
        }
        for (int i = 0; i < 5; i++) {
            vocales[i]=0;
        }
        for (int i = 0; i < cadena.length(); i++) {
            char letra = cadena.charAt(i);
            switch (letra) {
                case 'a':
                    ++vocales[0];
                    break;
                case 'e':
                    ++vocales[1];
                    break;
                case 'i':
                    ++vocales[2];
                    break;
                case 'o':
                    ++vocales[3];
                    break;
                case 'u':
                    ++vocales[4];
                    break;
            }
        }
        for (int i = 0; i < 5; i++) {
            System.out.print(vocal.charAt(i));
            System.out.println(": "+vocales[i]);
        }
   
    }