2

Pretendo tomar por scanner un "sí" o "no", y si la comparación grat == "si" se cumple, debería tomar como true. Pero no funciona.

System.out.println("¿Envio gratuito? (si no)");
String grat = scan.nextLine();
boolean gratuito = (grat == "si");
System.out.println(gratuito);
Jorgesys
  • 103,630
  • 13
  • 52
  • 124
ret
  • 1,818
  • 2
  • 13
  • 37
  • ¿Responde esto a tu pregunta? [¿Cómo comparar correctamente Strings (y objetos) en Java?](https://es.stackoverflow.com/questions/225/c%c3%b3mo-comparar-correctamente-strings-y-objetos-en-java) – Riaven Jan 10 '20 at 18:09

2 Answers2

3

En java, la comparación de Strings no debe realizarse mediante ==

boolean gratuito = (grat == "si");

debes usar el método equals():

boolean gratuito = (grat.equals("si"));

De hecho al parecer es un error común cuando iniciamos a programar en algunos lenguajes, en el caso de Java, te sugiero revisar:

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

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
2

Compañero, tienes un error muy simple, recuerda que para la comparación de cadenas (String) utilizamos equals, tu estas utilizando == como si fuera un entero.

  System.out.println("¿Envio gratuito? (si no)");
  String grat = scan.nextLine();
  boolean gratuito = (grat.equals("si"));
  System.out.println(gratuito);
YemisiSCG
  • 1,240
  • 6
  • 22