Autor Tema: Ejercicio CU00661B* contar vocales java ejemplo toUpperCase  (Leído 5863 veces)

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola. De la lección CU00661B, envió aquí mi pequeño programa para contar vocales. A continuación van las dos clases "AparicionDeVocales" y "EntradaDeTeclado"

Código: [Seleccionar]
/**
 * Detalles de la clase.
 * Contador de la aparición de vocales en el texto introducido
 * @author (Toni)
 * @version (0)
 */
public class AparicionDeVocales {
    // Atributos de la clase AparicionDeVocales
    //Constructor para objetos de la clase AparicionDeVocales
    public AparicionDeVocales() {
        // Inicializa atributos
    } // Fin del constructor AparicionDeVocales
    // Siguen los setters para los atributos de la clase AparicionDeVocales

    // Ahora los getters para los atributos de la clase AparicionDeVocales

    // Y seguidamente, procedimientos y funciones varios.
    public static void main(String [] args) {
        int numA = 0;// contadores de caracteres
        int numE = 0;
        int numI = 0;
        int numO = 0;
        int numU = 0;
        int numResto = 0;
        int numCaracteres = 0;
        System.out.println ("Por favor, muéstrenos su frase.\n" +
            "Vamos a pedir a los duendecillos que vayan contando las vocales introducidas. Beep:");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println ("Gracias por su colaboración.\n" +
            "Por favor. Déjenos unos millones de unidades de tiempo para realizar el trabajo.\n");
        String aCotejar = entrada1.getEntrada();
        numCaracteres = entrada1.getLongitud();
        String letra = ""; //letra la investigar
        for (int i = 0; i < numCaracteres; i++) {
            letra = aCotejar.substring(i,i+1).toUpperCase();
            if (letra.equals("A")) {
                numA ++;
            } else if (letra.equals("E")) {
                numE ++;
            } else if (letra.equals("I")) {
                numI ++;
            } else if (letra.equals("O")) {
                numO ++;
            } else if (letra.equals("U")) {
                numU ++;
            } else {
                numResto ++;
            }// fin del if
        } // fin del for
        System.out.println ("Bien. Ya hemos terminado.\n" +
            "Después de una árdua tarea, presentamos el resultado de nuestro trabajo.");
        System.out.println ("Se han introducido en total " + numCaracteres + " caracteres.");
        int sumaPorcentajes = 0;
        System.out.println ("Se ha usado " + numA + " veces la letra \"A\". Un " + numA * 100 / numCaracteres + "% del total.");
        sumaPorcentajes = numA * 100 / numCaracteres;
        System.out.println ("Se ha usado " + numE + " veces la letra \"E\". Un " + numE * 100 / numCaracteres + "% del total.");
        sumaPorcentajes += numE * 100 / numCaracteres;
        System.out.println ("Se ha usado " + numI + " veces la letra \"I\". Un " + numI * 100 / numCaracteres + "% del total.");
        sumaPorcentajes += numI * 100 / numCaracteres;
        System.out.println ("Se ha usado " + numO + " veces la letra \"O\". Un " + numO * 100 / numCaracteres + "% del total.");
        sumaPorcentajes += numO * 100 / numCaracteres;
        System.out.println ("Se ha usado " + numU + " veces la letra \"U\". Un " + numU * 100 / numCaracteres + "% del total.");
        sumaPorcentajes += numU * 100 / numCaracteres;
        System.out.println ("Añadiendo consonantes, espacios y demás, se han utilizado: " + numResto + " caracteres. " +
            "Un " + numResto * 100 / numCaracteres + "% del total.");
        sumaPorcentajes += numResto * 100 / numCaracteres;
        System.out.println ("\nLos duendecillos, además de sisarme el cambio. También se quedan con los decimales.\n" +
            "Los porcentajes, llegan hasta un " + sumaPorcentajes + "%. Pero ya me valen para mis estadísticas.\n\tFin del trabajo.");
    }// fin del main
} // Fin de la clase AparicionDeVocales

Me olvidé de la clase "EntradaDeTeclado"
La envío aquí.
Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado
/**
 * Detalles de la clase.
 *
 * @author (Toni)
 * @version (0)
 */
public class EntradaDeTeclado {

    // Atributos de la clase EntradaDeTeclado
    private String entradaTeclado;

    /**
     * Constructor para objetos de la clase EntradaDeTeclado
     */
    public EntradaDeTeclado() {
        // Inicializa atributos
        entradaTeclado = "";
        pedirEntrada();
    } // Fin del constructor EntradaDeTeclado

    // Siguen los setters para los atributos de la clase EntradaDeTeclado

    // Ahora los getters para los atributos de la clase EntradaDeTeclado

    // Y seguidamente, procedimientos y funciones varios.
    public void pedirEntrada() {
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextLine();
    }

    public String getEntrada() { return entradaTeclado; }

    public String getPrimeraPalabra() {
        for (int i = 0; i <entradaTeclado.length() -1 ; i++) {
            if (entradaTeclado.substring(i,i+1).equals(" ") ||
            entradaTeclado.substring(i,i+1).equals(",") ||
            entradaTeclado.substring(i,i+1).equals(";") ||
            entradaTeclado.substring(i,i+1).equals(".") ||
            entradaTeclado.substring(i,i+1).equals(":") ) {
                return entradaTeclado.substring(0,i);
            }//fin del if
        }//fin del for
        return entradaTeclado;//Caso de que no se detecte ningún espacio devolvemos lo que haya
    }// fin del método
   
    public int getLongitud() {
        return entradaTeclado.length();
    }// fin dle método
} // Fin de la clase EntradaDeTeclado

Saludos.


A mi, me funciona bien. Como veréis en mi código incluyo mensajes como si hablara con el usuario del programa. Eso lo hago a menudo, es mi manera de quitarle hierro a la respuesta cuadriculada de la computadora.

Dadme vuestra opinión.
Saludos
---------------
« Última modificación: 09 de Septiembre 2014, 08:26 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00661B* contar vocales java ejemplo toUpperCase
« Respuesta #1 en: 02 de Julio 2014, 16:57 »
Hola, he visto el código y te puedo felicitar, pues se ve que estás progresando y manejando correctamente los conceptos, creo que puedes estar satisfecho. No hay gran cosa que objetar al código. Lo único que te voy a plantear es un pequeño reto: has creado dos "programas" denominados AparicionDeVocales y ComparaLetraPorLetra (código en https://www.aprenderaprogramar.com/foros/index.php?topic=1292). El código no tiene ningún problema, pero sí te diría que te falta por interiorizar la filosofía de la orientación a objetos (cosa que no te creas que resulta sencilla, tómatelo con calma). En la programación orientada a objetos, casi todo deben ser objetos. El reto que te planteo es que modifiques el código para que existan tres clases que definan objetos: una clase "ManejadorDeVocales" que se corresponde con tu clase AparicionDeVocales, pero que no lleve método main. Simplemente debe proveer métodos para realizar tareas. Otra clase "ComparadorLetraALetra" que se corresponde con tu clase ComparaLetraPorLetra, pero que no lleve método main. Simplemente debe proveer métodos para realizar tareas.

Finalmente, en el método main debes tener algo de código que use los objetos y los métodos, pero no el grueso del código. En esa clase deben crearse objetos y permitir ver su funcionalidad a modo de ejemplos.

Ahí queda la idea. Saludos.
« Última modificación: 09 de Septiembre 2014, 08:28 por Alex Rodríguez »
Responsable de departamento de producción aprenderaprogramar.com

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re: Ejercicio CU00661B* contar vocales java ejemplo toUpperCase
« Respuesta #2 en: 03 de Julio 2014, 07:40 »
Hola César, gracias por tu aliento.
El pequeño reto que mencionas, será para mi un gran reto POO (Para Orientarme a los Objetos). A ver si empiezo a acomodarme en ese espacio.

Gracias otra vez.
Saludos
« Última modificación: 09 de Septiembre 2014, 08:28 por Alex Rodríguez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".