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"
/**
* 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í.
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
---------------