Java - devolver nº palabras con 3 o mas vocales

   
Vista:

devolver nº palabras con 3 o mas vocales

Publicado por paco (1 intervención) el 24/12/2014 17:25:46
hola compañeros.

estoy empezando con el tema de los Stacks y demas y me he puesto a realizar un programa al cual le paso una frase y me debe de devolver el numero de palabras que contiene que tenga 3 o mas vocales DISTINTAS.

el programa me compila, pero siempre de devuelve un 0 y no se cual es el motivo.

me gustaría saber si podeis ayudarme con esto ya que llevo un par de dias bloqueado. muchas gracias y un saludo a todos.

Puede que sea mas facil realizar el ejercicio de otra forma, pero debo hacerlo empleando estos metodos.

package strings;
import java.util.*;
public class contarPalMas3Vocale {
//funciones
//funcion que me devuelve el numero de palabras que hay que contengan mas de 3 vocales

public static int contar(String texto){
String palabra="";
int c1=0, c2=0, c3=0, c4=0, c5=0;
int vocales=0, cont_palabras=0, contador=0;
StringTokenizer frase = new StringTokenizer(texto);
Stack<String> pila = new Stack<String>();
while (frase.hasMoreTokens()) {
pila.push(frase.nextToken());
palabra=pila.pop();
while (!pila.empty())
while (contador<palabra.length()){
//--------------------------------------------------------------------------------------------------------------------------

//si son vocales operamos de la siguiente forma

if(palabra.charAt(contador)=='a'){
c1++;
if(c1>1){
c1=1;
}
}
if(palabra.charAt(contador)=='e'){
c2++;
if(c2>1){
c2=1;
}
}
if(palabra.charAt(contador)=='i'){
c3++;
if(c3>1){
c3=1;
}
}
if(palabra.charAt(contador)=='o'){
c4++;
if(c4>1){
c4=1;
}
}
if(palabra.charAt(contador)=='u'){
c5++;
if(c5>1){
c5=1;
}
}
}
contador++;
vocales=vocales+c1+c2+c3+c4+c5;
}
if (vocales>=3)
cont_palabras++;
return cont_palabras;
}


public static void main(String[] args) {
System.out.println("introduzca una frase y le devolvere el numero de palabras que tienen 3 vocales");
System.out.println();
String frs = "";
Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
frs = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
System.out.println("el numero de palabras que tienen 3 vocales o mas es "+contar(frs));
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder