PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java-Problem



itsme
15-01-2002, 18:36
Hallo,
ich habe ein kleines Problem mit Java. Ich möchte nur eine simple While-Schleife machen habe aber keine Ahnung wo das Problem liegt.


Hier mal der Codeausschnitt:

BufferedReader input = new BufferedReader(
new InputStreamReader (System.in));

String strAntwort = "empty";

while ((strAntwort != "ja") && (strAntwort != "nein"))
{
strAntwort = input.readLine();

if ((strAntwort == "ja") || (strAntwort == "nein"))
{
System.exit(0);
}
}

Sobald "ja" oder "nein" eingegeben wird sollte sich das Programm beenden. Das will es aber nicht. :eek: Was mache ich falsch?!?

Danke!

Cyrill
15-01-2002, 19:42
Hi!









Bei Variablen die Strings sind kannst du einen Vergleich nicht mit "==" machen sondern es geht glaub ich mit equals.









strAntwort.equals("ja")



Was gibt es den für Fehler beim compilieren...???



Ah ja ich seh noch etwas bin aber nicht sicher und zwar bei der while schleife, musst du da nicht die ´} Klammer nach dem strAntwort = input.readLine();


Hab erst vor kurzem angefangen mit Java und es kann gut sein das alles falsch ist!

Meine Idee:



BufferedReader input = new BufferedReader(

new InputStreamReader (System.in));

String strAntwort = "empty";



while ((strAntwort.equals("ja") && strAntwort.equals("nein")) == false)

{

strAntwort = input.readLine();

}



if ((strAntwort == "ja") || (strAntwort == "nein"))

{

System.exit(0);

}

itsme
15-01-2002, 19:59
Der Kandidat hat 101 Punkte! :)

Danke das wars!!

Cyrill
15-01-2002, 21:09
Oh cooll hätte ich nicht gedacht!

aber du hast bei if ((strAntwort == "ja") || (strAntwort == "nein")) das auch mit equals gehändelt!


Woher kommst du aus der schweiz?? ich komm auch von dort!

itsme
15-01-2002, 21:16
Woher kommst du aus der schweiz?? ich komm auch von dort!

Kannst ja nix dafür! :D

Ja, ich habe beides mit equals gelöst. Hat schlussendlich dann irgendwie funktioniert! ;)

Ich wohne in der Nähe von Basel.

Doc Maverick
16-01-2002, 17:34
Hi,
irgendetwas erscheint mir an dem Code noch nicht ganz Koscher, also damit meine ich die Fehlerbehandlung und so.
Hier mein Vorschlag:

BufferedReader input = new BufferedReader(new InputStreamReader (System.in));
String strAntwort = "empty";

do
{
strAntwort = input.readLine();
if(strAntwort==null)
strAntwort="empty"; // vielleicht auch break
}
while ((!strAntwort.equals("ja")) ||(!strAntwort.equals("nein")));

if ((strAntwort == "ja") || (strAntwort == "nein"))
{
System.exit(0);
}

Es kann nämlich auch vorkommen, daß readLine() null zurückliefert, und es ist vorteilhafter, wenn die Eingabe zuerst ausgelesen wird, bevor geprüft wird, ob die Schelifenabbruchsbedingung erfüllt ist.
Tschüß.

iGEL
18-01-2002, 17:33
Moin!

Auch noch ne kleine Bemerkung von mir:

es gibt neben .equals auch .equals.IgnoreCase. Genauso anzuwenden, ignoriert jedoch die Groß-/Kleinschreibung. ;)

cu Johannes