Foro sobre Java SE > Romper bucle while con String
Prueba así, verás que te funciona:
while (!"fin".equals(entrada))
Hay una diferencia entre usar el == y el equals con String, u otros objetos, que acabas de descubrir ;)
== y != sirven para ver si dos objetos son "el mismo objeto" (esto ya lo aprenderás más adelante).
Para saber si dos String contienen los mismos caracteres se usa el método equals:
if(texto1.equals(texto2)){
//Son iguales
}else if(!texto1.equals(texto2)){
//Son diferentes
}
El por qué funciona cuando le asignas "fin" directamente es por lo mismo que he dicho antes pero tiene un poco de miga :)
Existe una diferencia entre hacer:
String entrada = "fin";
String otraEntrada = "fin";
y
String entrada = new String("fin");
String otraEntrada = new String("fin");
En el primer caso, la máquina virtual sólo crea un objeto en memoria y apunta a él tanto en entrada como en otraEntrada, por lo que al compararlos con == es true.
En el segundo caso, se crean dos objetos diferentes (dos objetos en memoria), por eso es false.
Hola!
Acabo de empezar a programar en java y me ha surgido una pequeña duda, por que no funciona el siguiente código? Si antes del while a la variable "entrada" le asigno el string "fin" si que lo coge y no inicia el ciclo del while, pero por que una vez iniciado no me acepta el "fin" que le introduzco por consola ?
----------------------------------------------------------------------------------------------------
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
String entrada = "";
while (entrada != "fin") {
System.out.println("Escribir fin para romper el bucle");
entrada = lectura.next();
System.out.println(entrada);
}
}
-------------------------------------------------------------------------------------------------
Gracias y un saludo!