Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con programa que busca letras en una palabra

Estas en el tema de Problema con programa que busca letras en una palabra en el foro de Java en Foros del Web. Buenos días, tengo un programa que genera letras aleatorias según el número que entres por teclado: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original public char letrasAleatorias(){ ...
  #1 (permalink)  
Antiguo 28/10/2013, 02:21
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Problema con programa que busca letras en una palabra

Buenos días, tengo un programa que genera letras aleatorias según el número que entres por teclado:
Código HTML:
Ver original
  1. public char letrasAleatorias(){
  2.       for(int i=0; i < numLetras;i++){
  3.           letras = (char)(Math.random() * numLetras + 'a');
  4.            System.out.print(letras + " ");
  5.        }
  6.     return letras;
  7.    }

Después ingresas una palabra por teclado:
Código HTML:
Ver original
  1. public String entradaInstrumento(){
  2.         System.out.println("Instrumento: ");
  3.         instrumento = lector.next();
  4.         return instrumento;
  5.     }
lo que trato de conseguir es que si la palabra que entra por teclado contiene una o mas de las letras generadas en el random lo diga y las descuente...he intentado convertir un string en cadena de caracteres, y la cadena de caracteres en string, comparando y recomparando y no encuentro la manera, adjunto mi última versión ... mi pc está a punto de comprobar la ley de la gravedad y yo a punto de empezar un curso de punto de cruz que pienso que se me dará mejor:
Código HTML:
Ver original
  1. public void procesarInstrumento(){
  2.         char[] cadenaInstr = instrumento.toCharArray();
  3.         String cadenaLetras = Character.toString(letras);
  4.         boolean letraEncontrada = false;
  5.         for(int i=0;i<cadenaInstr.length;i++){
  6.            if(cadenaLetras.equals(cadenaInstr[i])){
  7.                letraEncontrada = true;
  8.                break;
  9.               }
  10.         if (letraEncontrada) {
  11.        System.out.println(cadenaLetras + " SI se encuentra en " + instrumento);
  12.       } else {
  13.       System.out.println(cadenaLetras + " NO se encuentra en  "+ instrumento);
  14.         }
  15.       }
  16.     }
  #2 (permalink)  
Antiguo 28/10/2013, 04:33
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema con programa que busca letras en una palabra

Primero prueba a comprobar si letras devuelve un valor correcto con:

System.out.println("Letras: " + letras);

Luego para convertir a String yo haría

String cadenaLetras = String.valueOf(letras);

Ahora bien, a la hora de comparar, compara String con String o char con char, pero no mezcles.

Si cadenaLetras es una letra basta con hacer
if (palabra.indexOf(cadenaLetras) > -1) {
System.out.println("La palabra contiene la letra" + cadenaLetras );
} else {
System.out.println("La palabra NO contiene la letra" + cadenaLetras );
}

Si cadenaLetras fuese un conjunto de letras entonces puedes usar split("") para separar cada letra en cadenaLetras y comparar luego una a una.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 28/10/2013, 06:39
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con programa que busca letras en una palabra

Imposible, solo consigo que me busque la última letras del array de letras que da el random

Código HTML:
Ver original
  1. public void procesarInstrumento(){
  2.         String [] array = instrumento.split("");
  3.         String cadenaLetras = String.valueOf(letras);
  4.         boolean letraEncontrada = false;
  5.         for(int i=0;i<array.length;i++){
  6.            if(array[i].indexOf(cadenaLetras) >-1){
  7.                 letraEncontrada = true;
  8.                 break;
  9.                }
  10.                
  11.             }
  12.          if (letraEncontrada) {
  13.         System.out.println(cadenaLetras + " SI se encuentra en " + instrumento );
  14.        } else {
  15.        System.out.println(cadenaLetras + " NO se encuentra en  "+ instrumento);
  16.          }
  17.        }
lo he intentado también con

Código HTML:
Ver original
  1. String[]arrayLetras=cadenaLetras.split("");

y comparando los dos arrays y sigue tomándome la ultima letra de las letras del random.

y comparando las dos cadenas y no lo consigo...
  #4 (permalink)  
Antiguo 28/10/2013, 08:45
JMitsu
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con programa que busca letras en una palabra

Algo asi debe servir.

Código Java:
Ver original
  1. public char[] letrasAleatorias () {
  2.     char[] letrasRandom = new char[numletras.length];
  3.     for ( int = 0; i < numLetras; i++) {
  4.         char letra = (char) (Math.random * numLetras + 'a');
  5.         letrasRandmom[i] = letra;
  6.     }
  7.     return letrasRandom;
  8. }
  9.  
  10. private void String palabraAComparar() {
  11.     System.out.println("Ingrese la palabra a comparar:");
  12.     palabra = lector.nextLine();
  13.     return palabra;
  14. }
  15.  
  16. private void comparar() {
  17.  
  18.     char[] palabra = palabaraAComparar().toCharArray();
  19.     char[] letrasGeneradas = letrasAlatorias();
  20.     boolean letraEncontrada = false;
  21.     short aciertos = 0;
  22.    
  23.     // compara los dos arrays:
  24.     for (short i=0; i<palabra.length; i++) {
  25.         for(short i=0; i<letrasGeneradas.length; i++) {
  26.             if (palabra[i] == letrasAleatorias[i]) {
  27.                 letraEncontrada = true;
  28.                 aciertos++;
  29.             }
  30.         }
  31.     }
  32.  
  33.     if (letraEncontrada) {
  34.         System.out.println(String.valueOf(palabra) + "contiene " + aciertos +" letras de " + String.valueOf(letrasGeneradas));
  35.     }
  36.     else {
  37.         System.out.println("No hay coincidencias.");
  38.     }


Aquí:

Código Java:
Ver original
  1. for(int i=0; i < numLetras;i++){
  2.            letras = (char)(Math.random() * numLetras + 'a');
  3.             System.out.print(letras + " ");
  4.         }
  5.      return letras;


Solamente estás devolviendo una letra.

Etiquetas: letras, palabra, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.