"We are back" « oc.at

Java Schleifenproblem

repi 12.12.2007 - 22:40 950 6
Posts

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
Bin grade dabei java zu lernen, hab aber bei dieser Methode ein problem mit der 'doWhile' Schleife. Idee is die: wenn ich "j" eingebe, soll ich immer wieder aufs neue einen Betrag eingeben können.
Die Verneinung mit "n" funktioniert, da wirds programm beendet.

Code: PHP
public void aufsKontoEinzahlen(){
			boolean ende = false;
			int Betrag = 0;
			
			System.out.println("Gib Betrag ein: ");
			Betrag = Eingabe.gibein(Betrag);
			System.out.println( + Betrag + " eingezahlt. Neuer  Kontostand: " 
					+ (Betrag + kontostand));
			
			char Frage = ' ';
			do {
				System.out.print("Nochmal einzahlen (j/n): ");
				Frage = Eingabe.gibein(Frage);
			}while(Frage != 'j' && Frage != 'n');
			
			if (Frage == 'n') ende = true;
			
			while(!ende);
			if (ende = true)
				System.out.println("Thx, Wiedersehn");
		}
	}
Bearbeitet von repi am 12.12.2007, 22:46

__Luki__

bierernste Islandkritik
Avatar
Registered: Nov 2003
Location: gradec
Posts: 3060
Ich hab' schon etwas getrunken heute - aber kann das schon stimmen?

"while(Frage != 'j' && Frage != 'n'); "?

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11354
Code:
 while(!ende);

Was soll das tun? So lange "ende" false ist, tut das nichts, bis in alle Ewigkeit. Dir fehlt da ein passendes do {...} davor. Dafür kannst du dir das "if" danach sparen.

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von that
Was soll das tun? So lange "ende" false ist, tut das nichts, bis in alle Ewigkeit. Dir fehlt da ein passendes do {...} davor. Dafür kannst du dir das "if" danach sparen.

Abgesehen davon sind die beiden letzten if's und die 2te while-Schleife sinnlos (zu diesem zeitpunkt ist dein programm eigentlich schon abgeschlossen).

Kleiner Tip (da es sonst anscheinend noch keiner erwähnenswert gefunden hat): Der Teil deines Programms, der sich wiederholen soll muss in der Schleife stehn, nicht wie bei dir drüber!

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
Zitat von that
Code:
 while(!ende);

Was soll das tun? So lange "ende" false ist, tut das nichts, bis in alle Ewigkeit. Dir fehlt da ein passendes do {...} davor. Dafür kannst du dir das "if" danach sparen.

ende ist eben nicht false while(!ende) negiert ja ende, und mein bool'scher wert oben ist ja mit false deklariert. also bedeutet doch !ende solange ende nicht false ist, oder?

ich bin schon draufkommen. nach dem ausdruck while(!ende) darf kein ; stehen. das wäre eine leere Anweisung. denn das while mit dem ; am ende wäre gleichzusetzen mit

while(!ende) {
;
}
deswegen läuft die schleife endlos, der rest sollt passen.
Auf jeden Fall funktioniert jetzt das ganze drum. Dieser Codeblock war nur ein kleiner Teil, dass hätt ich vllt. dazu sagen müssen. Sry

die letzte if-Anweisung hab ich noch rausgefunden dass die unnötig ist.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11354
Zitat von repi
ende ist eben nicht false while(!ende) negiert ja ende, und mein bool'scher wert oben ist ja mit false deklariert. also bedeutet doch !ende solange ende nicht false ist, oder?

"ende" ist false, daher ist "!ende" true und die Schleife läuft endlos. Der Wert einer Variable ändert sich nur, wenn du ihr was zuweist, nicht wenn du sie verwendest.

repi

Addicted
Avatar
Registered: Jan 2004
Location: Sollenau
Posts: 508
ok, ich werd mich da nochmal hinsetzen und das ganze teil bis aufs letzte zerlegen und durchdenken.
dieses java lernen macht echt süchtig, ich träum sogar scho davon. Danke für die Antworten!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz