0

Lo que quisiera saber es cómo comprar dos cadenas, es decir... Tengo el siguiente código:

 List<String> p;
 private class Lista {
    private String Lista() {
        p = new ArrayList<>();
        p.add("brócoli");
        p.add("círculo");
        p.add("célula");
        p.add("carátula");
        p.add("depósito");
        p.add("física");
        p.add("ábaco");
        p.add("azúcar");
        p.add("ámbar");
        p.add("ángel");
        p.add("César");
        p.add("césped");
        p.add("cádiz");
        p.add("éter");
        p.add("bebé");
        p.add("acción");
        p.add("avión");
        p.add("Jesús");
        p.add("país");
        p.add("papá");
        p.add("sofá");


        return null;
     }
}

Y quisiera comparar en otro método con un if, el método es el siguiente:

 private class Incorrecto {
    private String Incorrecto() {
        return null;
    }
}

Es decir, si la palabra es igual a "bebé" es correcto, y cambiaría el textoen el JLabel.


Esta es la clase que traté de realizar:

 private class Incorrecto {
    private String Incorrecto() {
        if(p.equals("bebé")){
            coi.setText("¡Es correcto!");  <---Este es en el jlabel en el que se va a imprimir en el entorno gráfico y este método va dentro de un jbutton.
        } return null;
    }
}
Jorgesys
  • 103,630
  • 13
  • 52
  • 124
Las3GS
  • 11
  • 2

2 Answers2

0

Si únicamente deseas cambiar el valor de JLabel tu método puede ser definido tipo void, este método recibiría los elementos contenidos en el ArrayList para ser comparados en un bucle, si alguno es igual (en este caso a "bebé", el texto mostrado en el JLabel sería "¡Es correcto!"

private class Incorrecto {

    private void Incorrecto(List p) {
        for(int i = 0; i<p.size();i++){
        //Obtiene valor de cadena en ArrayList.
        String cadena  = (String)p.get(i);
         if(cadena.equals("bebé")){
             //Si el contenido es igual cambia el texto en JLabel
            coi.setText("¡Es correcto!");             
          } 
        }
    }    
}

llamarías de esta forma el método:

   List  p = new ArrayList<>();
    p.add("brócoli");
    p.add("círculo");
    p.add("célula");
    p.add("carátula");
    p.add("depósito");
    p.add("física");
    p.add("ábaco");
    p.add("azúcar");
    p.add("ámbar");
    p.add("ángel");
    p.add("César");
    p.add("césped");
    p.add("cádiz");
    p.add("éter");
    p.add("bebé");
    p.add("acción");
    p.add("avión");
    p.add("Jesús");
    p.add("país");
    p.add("papá");
    p.add("sofá");


    Incorrecto incorrecto = new Incorrecto();
    incorrecto.Incorrecto(p);

Recuerda que la forma correcta para comparar cadenas es mediante el uso del método equals()

¿Cómo comparar correctamente Strings (y objetos) en Java?

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
-1

Ya probaste con el método equals() ?

String1.equals(String2)

private String Incorrecto(List p, String cadena) {
for(int indice = 0; indice < p.size(); indice++) {
  if(p.get(indice).equals(cadena)) {
      return "Correcto";
 } else {
      return "Incorrecto";
 }

} }

Es codigo no probado, adaptalo a tu codigo

  • Muchas gracias por responder, ya probé con equals() pero no me da el resultado. – Las3GS Nov 26 '18 at 22:00
  • Puedes enseñarme el codigo de como lo usas? Porque con equals deberia ser mas que suficiente para lo que quieres hacer. Ten en cuenta que los 2 Strings deben ser totalmente iguales (No mayusculas, ni tildes), porque para eso se usa otro metodo donde no se tenga en cuenta por ejemplo, si un String esta en mayusculas y el otro no. – SilverWolf Nov 26 '18 at 22:01
  • Te lo pongo en la siguiente respuesta. – Las3GS Nov 26 '18 at 22:05
  • Antes de comparar imprime p ya sea por consola o por un mensaje (JOptionPane)... Para ver que valor tiene. Y como recomendación utiliza Pastebin.com cuando quieras compartir algún código, allí se entiende mejor. – SilverWolf Nov 26 '18 at 22:10
  • Mira creo que te falta algo mas de codigo.... debes recorrer p porque esta es una lista y obtener cada valor que tenga almacenado, esto lo puedes hacer con un for, a medida que vayas obteniendo sus valores entonces ahi si los comparas con equals. No puedes comparar una lista(p) con un String de la forma que lo estas haciendo. – SilverWolf Nov 26 '18 at 22:17
  • Ese for lo debo meter con un entero? o cómo se metería ese for? – Las3GS Nov 26 '18 at 22:24
  • Actualice mi respuesta, buena suerte :) – SilverWolf Nov 26 '18 at 22:36
  • Gracias y otra duda, si la cadena tiene acentos se usa igual el equals()? – Las3GS Nov 26 '18 at 23:19