elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con este método.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con este método.  (Leído 7,873 veces)
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: Ayuda con este método.
« Respuesta #10 en: 8 Octubre 2011, 02:18 am »

Bueno, al final, terminé haciendo otro método distinto para lo mismo. Es que cuando intentaba usar el tuyo tenía problema con los espacios, salían todas las letras juntas y el método dibujar no me funcionaba bien, seguro fue que me confundí en algo porque es un pelín diferente imprimir el texto en la interfaz, pero bueno....
el caso es que ahora tengo este método:

Código
  1. public void buscarLetra(){
  2. chequearif = false;
  3. string = "";
  4. letra = letraEscogida.toCharArray(); //letra es un vector. la letraEscogida la escoge el usuario desde un combo box
  5.                                                                           //la razon para esta conversion es para poder asignar la letra a arrayGuiones[]
  6. System.out.println("la letra pasa a char:" +letra[0]);
  7. int index = 0;
  8. for(int i=0;i<(palabraElegida.length());i++){
  9. if(palabraElegida.substring(i, i+1).equals(letraEscogida) == true){
  10. if(chequearif == true){//este if es para cuando una palabra tiene letras repetidas
  11. string = "";
  12. index = palabraElegida.indexOf(letraEscogida, index+1);
  13. index *= 2; //lo multiplico por dos por los espacios en blanco, para que ocupe la posicion correcta.
  14. arrayGuiones[index] = letra[0]; //sustituyo la posicion que ocupa la letra en la palabra secreta por el guion bajo correspondiente
  15. System.out.println(index);
  16. }
  17. index = palabraElegida.indexOf(letraEscogida);
  18. index *= 2;
  19. arrayGuiones[index] = letra[0];
  20. for(int j=0;j<arrayGuiones.length;j++){
  21. string += arrayGuiones[j]+"";
  22. }
  23. lbl_palabra.setText(string);
  24. chequearif = true;
  25. }
  26. }
  27.                         //esta parte no es relevante, por ahora.
  28. getLblText();
  29.  
  30. if(chequearif == false){
  31. fallos=fallos+1;
  32. lbl_img.setIcon(imagen[fallos]);
  33. System.out.println("Fallos: " +fallos);
  34. if(fallos == 6){
  35. jcb.setEnabled(false);
  36. boton.setEnabled(false);
  37. }
  38. }
  39. }
  40.  

Sí, mucho más complicado y menos eficiente, pero ¡al fin pude hacerlo yo!, vale que eso me tenía sin dormir por varios días xD y todavía lo va a seguir haciendo... porque no sé que pasa, pero no funciona bien con la palabra "gallina", específicamente con la letra "l" (L minúscula). Cuando mandó la letra L, me da un montón de errores. No sé si pasará con más letras porque ahora solo tengo 10 palabras (pato, vaca, gallina, avestrus, canguro, caracol, perro, oveja, aguila, conejo y chivo). Y solo me pasa con gallina. ¿me hechan una mano?  :rolleyes:  ;D

Los System.out.print que hay en el código no son necesarios, solo que me ayudan a depurarlo y a ver lo que pasa internamente.

También pasa con "perro", así que el problema es cuando la letra que se repite van una después de la otra. "r" "r"; "l" ,"l"

Las tres primeras líneas del error dice:
Estos datos son con la palabra "gallina" y cuando envié la letra "a" y después con la "l"
Citar
longitud de array guionesBajos: 14
la letra pasa a char:a
_ _ _ _ _ _ _
primer index: 2
segundo index: 12
primer index: 2
_ a _ _ _ _ a
la letra pasa a char:l
primer index: 4
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -2
   at Ahorcaito.buscarLetra(Ahorcaito.java:232)
   at Ahorcaito.actionPerformed(Ahorcaito.java:188)

Lo que dice primer index, es el valor del index que se ejecuta primero, cuando chequearif es false. el segundo index, es cuando se cumple chequearif es true. La longitud del array de guionesBajos, (o sea las rayitas que representan las letras del programa) es de 14, contando los espacios en blanco.
Si hubiera enviado la letra L los datos deberían ser:
primer index: 4
segundo index: 6
porque la primera posición en la palabra "gallina" de la letra L es 2 y como se múltiplica por 2 = 4. La segunda posicion de la L es 3 y 3*2=6.

El error que me da me dice que el array está fuera de los límites, pero según mi análisis, no es así :-/


« Última modificación: 8 Octubre 2011, 04:25 am por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
|Miguel|

Desconectado Desconectado

Mensajes: 217



Ver Perfil
Re: Ayuda con este método.
« Respuesta #11 en: 25 Octubre 2011, 17:36 pm »

Si te interesa para comparar, tengo por ahí un ahorcado que hice en C.


En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como hacer este metodo de propagacion con APIs
Programación Visual Basic
ricardovinzo 4 4,016 Último mensaje 2 Abril 2009, 01:14 am
por c4st0r
Este metodo que estoy usando esta bien?
.NET (C#, VB.NET, ASP)
enterariel 2 5,114 Último mensaje 6 Mayo 2009, 00:48 am
por MANULOMM
Dudas con parametros para este método
Java
GaudyG 1 3,144 Último mensaje 4 Julio 2011, 02:38 am
por Valkyr
que hace este metodo css()
Desarrollo Web
franfis 1 1,913 Último mensaje 7 Julio 2013, 04:10 am
por NetStorm
¿Por qué es ambigua la llamada a este método?
Programación C/C++
Repikas 1 2,916 Último mensaje 26 Junio 2017, 14:43 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines