Dejo mi solución al ejercicio ropuesto CU00923C del tutorial de programación Java avanzado.
package claseCU00923C;
import java.util.Stack;
public class VerificadorVocales {
private String cadena;
private char vocal;
public VerificadorVocales() {
}
public int CuentaVocal(String pCadena,char pVocal) {
int resultado = 0;
Stack<String> pila = new Stack<String>();
int i=0;
int counter=0;
while (i < pCadena.length()) {
if (pCadena.charAt(i) == pVocal) {
pila.push(Character.toString(pVocal));
counter++;
}
i++;
}
if (!pila.empty()) resultado = (counter%2 == 0)? 1: -1;
return resultado;
}
}
package claseCU00923C;
import java.util.Scanner;
public class Programa {
public static void main(String arg[]) {
String cadena;
String aes="0",ees="0",ies="0",oes="0",ues="0";
Scanner entradaTeclado = new Scanner(System.in);
VerificadorVocales verified = new VerificadorVocales();
boolean analizar = true;
while(analizar) {
System.out.println("¿Qué cadena desea analizar?");
cadena = entradaTeclado.next();
aes = ((verified.CuentaVocal(cadena,'a')) == 1) ?"par" : ((verified.CuentaVocal(cadena,'a')) == -1 ? "impar" : "0") ;
ees = ((verified.CuentaVocal(cadena,'e')) == 1) ?"par" : ((verified.CuentaVocal(cadena,'e')) == -1 ? "impar" : "0");
ies = ((verified.CuentaVocal(cadena,'i')) == 1) ?"par" : ((verified.CuentaVocal(cadena,'i')) == -1 ? "impar" : "0");
oes = ((verified.CuentaVocal(cadena,'o')) == 1) ?"par" : ((verified.CuentaVocal(cadena,'o')) == -1 ? "impar" : "0");
ues = ((verified.CuentaVocal(cadena,'u')) == 1) ?"par" : ((verified.CuentaVocal(cadena,'u')) == -1 ? "impar" : "0");
System.out.println("El numero de aes es " + aes + ", El numero de ees es " + ees + ", el numero de ies es " + ies + ", el numero de oes es " + oes + ", el numero de ues es " + ues);
System.out.print("¿Desea analizar otra cadena? " );
analizar = (entradaTeclado.next().equalsIgnoreCase("S")) ?true:false;
}
System.out.println("Gracias por utilizar el programa");
}
}