Java Schleifenproblem

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java_schleifenproblem_189081/page_1 - zur Vollversion wechseln!


repi schrieb am 12.12.2007 um 22:40

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");
		}
	}


__Luki__ schrieb am 12.12.2007 um 22:46

Ich hab' schon etwas getrunken heute - aber kann das schon stimmen?

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


that schrieb am 12.12.2007 um 22:59

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 schrieb am 13.12.2007 um 20:28

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 schrieb am 14.12.2007 um 06:53

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 schrieb am 14.12.2007 um 09:06

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 schrieb am 14.12.2007 um 15:30

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!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026