Problema con java

Iniciado por MrDev, 24 Enero 2016, 15:32 PM

0 Miembros y 1 Visitante están viendo este tema.

MrDev

Llevo aqui 3:30 con esto y he probado con StringTokenizer y StringBuffer pero no doy con la tecla, el caso es que deberia leer todo el string y mostrar la cantidad de consonantes y vocales, a ver si me podeis echar una mano...

este es el codigo del main.

Código (java) [Seleccionar]
package strings;
import java.util.*;
public class main {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);

System.out.println("Introduce un texto");
Cadena miCadena = new Cadena(entrada.next());

System.out.println("Esta cadena tiene "+miCadena.getConsonante()+" consonantes y "+miCadena.getVocal()+" vocales.");

entrada.close();
}

}


Y este es el codigo del objeto, que seria la cadena:

Código (java) [Seleccionar]
package strings;

public class Cadena {
private String cadena;
private int cont, consonante, vocal;

public Cadena(String cadena){
for(cont=0;cont<cadena.length();++cont){
if(cadena.charAt(cont) == 'a' || cadena.charAt(cont) == 'e' || cadena.charAt(cont) == 'i' || cadena.charAt(cont) == 'o' || cadena.charAt(cont) == 'u'){
vocal++;
}
else{
consonante++;
}
}
}

public int getConsonante(){
return consonante;
}
public int getVocal(){
return vocal;
}
}

0xFer

#1
Si quieres leer toda la linea coloca esto donde debe;

Código (java) [Seleccionar]
entrada.nextLine()

Con next, si ingresas "Hola Mundo" sólo se considera "Hola" el resto se ignora.

En tu código los espacios se cuentan como consonantes y no estás considerando mayúsculas.

Saludos.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

MrDev

Cita de: 0xFer en 24 Enero 2016, 15:47 PMSi quieres leer toda la linea coloca esto donde debe;

Código (java) [Seleccionar]
entrada.nextLine()
Con next, si ingresas "Hola Mundo" sólo se considera "Hola" el resto se ignora.

En tu código los espacios se cuentan como consonantes y no estás considerando mayúsculas.

Saludos.

Muchas gracias por responder, de verdad.

Gracias por decirme lo del nextLine().

Ya se que no considera las mayusculas, no necesitaba hacerle un .toLowerCase() para leer todo el String.

Y por ultimo, para lo que has dicho sobre que los espacios se cuentan como consonantes, tengo que poner:

Else If(cadena.charAt(cont).isLetter()){...

Pero me da error porque lo considera un boolean ._.


Enviado desde mi iPhone utilizando Tapatalk

0xFer

#3
Para saber si es una letra puedes hacer algo como:

Código (java) [Seleccionar]
char caracter = cadena.charAt(cont);
if(Character.isLetter(caracter)){
   if(esVocal) {

   }
   else{
   
   }
}


CitarElse If(cadena.charAt(cont).isLetter()){

charAt devuelve un char( un tipo primitivo), no un objeto de alguna clase, y por lo tanto no tiene métodos.

Saludos.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

MrDev

vale, entonces el Character va a parte, yo pensaba que donde Character debia poner entrada, pero no es asi, gracias por resolver la duda.

0xFer

Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

MrDev

Si me permiten poner la solucion final para el que le pueda ser util:

metodo main:
Código (java) [Seleccionar]
package strings;
import java.util.*;
public class main {

public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);

System.out.println("Introduce un texto");
Cadena miCadena = new Cadena(entrada.nextLine());

System.out.println("Esta cadena tiene "+miCadena.getConsonante()+" consonantes y "+miCadena.getVocal()+" vocales.");

entrada.close();
}

}


clase Cadena:
Código (java) [Seleccionar]
package strings;

public class Cadena {
private int cont, consonante, vocal;
char caracter;

public Cadena(String cadena){
for(cont=0;cont<cadena.length();++cont){
caracter = cadena.charAt(cont);
if(Character.isLetter(caracter)){
if(caracter == 'a' || caracter == 'e' || caracter == 'i' || caracter == 'o' || caracter == 'u' ){
vocal++;
}
else{
consonante++;
}
}
}
}

public int getConsonante(){
return consonante;
}
public int getVocal(){
return vocal;
}
}