while (eingabe == "0") eingabe = JOptionPane.showInputDialog("...")

Javatisk

Neues Mitglied
Hallöchen,

ich bin Anfänger und versuche gerade ein Programm zu schreiben, bei dem eine Zeichenkette eingegeben werden soll, wobei "0" nicht akzeptiert wird, also in diesem Fall das Eingabefenster erneut geöffnet werden soll.
Leider wird das Fenster nicht wieder geöffnet, wenn ich 0 eingebe. Ich verstehe nicht, warum. Der Code ist folgender:
Java:
import javax.swing.JOptionPane;
public class blaBla
{
	public static void main(String[] args) 
	{
		String eingabe = "0";
		while (eingabe == "0")
		{
			eingabe = JOptionPane.showInputDialog("Bitte geben Sie etwas ein.");
			System.out.println("eingabe: <" + eingabe + ">");
		}
	}
}
Warum funktioniert dieses while(eingabe == "0") nicht? Warum öffnet sich das Fenster nicht wieder, wenn ich 0 eingebe?

Danke im Voraus!
 
Zuletzt bearbeitet:
Java:
while (eingabe == "0")

Weil man Strings mittels equals vergleicht! Der Referenzvergleich, der von dir hier verwendet wird, führt dabei nicht zwingender Weise zu einer wahren Aussage, da Java String speichert. Allerdings eben nicht endlos viele.
 
Also, um es auf den Punkt zu bringen, muss es eingabe.equals("0") heißen und nicht ==, da == sich um die Bits in der Variable kümmert und diese vergleicht, wohingegen .equals bei Strings die Strings vergleicht.
 
Und damit dein Programm auch damit umgehen kann, falls "eingabe" mal null ist, würde ich die Konstante an den Anfang setzen:

Java:
while("0".equals(eingabe)){...}[/Java]
 

Zurück
Oben