Cita: Jaja oye gracias, pero la verdad no me ayudaste en nada...jajajaja
Si "no te ayude en nada", aplicando la doble negación de la lógica proposicional: <<¿te ayudé en todo?>>
Cita: lo q pasa es q estoy comparando el contenido de un Jtextfield con una palabra, osea el programa en si es una sopa de letas, cada cadrito de la sopa de letras es un objeto q ereda de Jtextfield, el show es q cuando voy a hacer las comparaciones de las palabras, y para ser mas exactos que las letras, me salen falso, aun cuando las letras son iguales
Las variables que utilizas en la comparación son
c y
d
Ambas variables las declaras
y luego las inicializas
Código:
c = sopaDeLetras[i][j].getText();
[...]
d = palabra.charAt(0)+"";
La inicialización es el punto crítico; tienes dos posibilidades, que los
String sean iguales o que no. Si ambos
String son iguales, entonces javita crea una única instancia para los dos y la comparación te daría
true; sin embargo, si estos son diferentes, entonces javita creará una instancia para cada uno de ellos y el resultado de la comparación sería
false.
En la comparación te salía
false porque
c y
d tienen como valor la misma letra (razón por la cual en la comparación con el
equalsIgnoreCase obtenías
true; en otras palabras, entrabas al
if); sin embargo, una letra estaba en mayúscula y la otra en minúscula por lo que al compararlo con "
==" (este operador diferencia las mayúsculas y minúsculas de un
String) javita los consideraba diferentes. El problema, como ya te lo dije, se soluciona si en lugar de "
==" utilizas el método
equalsIgnoreCase.
Debo agregar que en mi primera respuesta te dije que deberías "realizar la comparación con el método equals o equalsIgnoreCase", pero si usas equals obtendrás lo mismo que con "=="; por lo tanto, el único método que debes emplear es equalsIgnoreCase si deseas que al comparar dos String que tengan asignados la misma letra, pero una en mayúscula y la otra en minúscula, te resulte true.
Pretendo explicarme mejor con la ejecución del siguiente código:
Código:
String cad1,cad2;
//Situación 1a
cad1="S";
cad2="S";
System.out.println("De la situación 1a con \"equalsIgnoreCase\": "+cad1.equalsIgnoreCase(cad2));
System.out.println("De la situación 1a con \"==\": "+(cad1==cad2));
//Situación 1b
cad1="s";
cad2="s";
System.out.println("De la situación 1b con \"equalsIgnoreCase\": "+cad1.equalsIgnoreCase(cad2));
System.out.println("De la situación 1b con \"==\": "+(cad1==cad2));
//Situación 2a
cad1="s";
cad2="S";
System.out.println("De la situación 2a con \"equalsIgnoreCase\": "+cad1.equalsIgnoreCase(cad2));
System.out.println("De la situación 2a con \"==\": "+(cad1==cad2));
//Situación 2b
cad1="S";
cad2="s";
System.out.println("De la situación 2b con \"equalsIgnoreCase\": "+cad1.equalsIgnoreCase(cad2));
System.out.println("De la situación 2b con \"==\": "+(cad1==cad2));
Cita: el problema ya lo "resolvi", y simplemente lo que hice fue ponerle un atributo extra a la clase Recuadro (que hereda de Jtextfiled), el atributo es de tipo string, y este atributo se inicializara cuando se este leyendo la sopa de letras de un archivo
Al menos que hayas usado los métodos
toUpperCase o
toLowerCase de la clase
String, no imagino cómo con "ponerle un atributo de tipo string que se inicialice cuando se este leyendo la sopa de letras de un archivo" puedas haber corregido lo de la comparación.
Cita: aun asi.. es algo sumamente extraño
Antes que mencionaras lo de la subclase
Recuadro no lo era, te lo aseguro. Sería interesante que pusieras el código respectivo para revisar en qué afecta el atributo que agregaste a la comparación en la que usas "
==".
Cita: a ver sime como puedo postar todo mi codigo con scrollbar, para q lo puedas ver o lo puedan ver
Si quieres escribir código simplemente utiliza la siguiente sintaxis:
[C O D E]
//Cuerpo del código
[/C O D E]
Nota: "C O D E" tiene que estar escrito junto ("CODE")