Java - While Frage
Geizhals » Forum » Programmierung » Java - While Frage (5 Beiträge, 44 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: Java - While Frage
17.01.2003, 08:49:35
ok, schau dir mal die In.readInt Methode in der In.java an (gibts auf der seite die du mal gepostet hast).

public static int readInt() {
String s = readDigits();
try {
done = true;
return Integer.parseInt(s);
} catch (Exception e) {
done = false; return 0;
}


was macht diese Funktion: Sie nimmt einen String (s), liest die eingegebenen Tasten ein (readDigits, eine andere Methode in In.Java) und macht dann eine Fehlerbehandlung (try / catch). Der Try block versucht nun den String in eine Integer Zahl zu wandeln. Wenn dies fehl schlägt (eben weil es vielleicht keine Zahl ist oder sonst was), tritt ein Fehler auf (Exception), er springt in den catch Block.
Tritt jedoch kein Fehler auf, so setzt er die Variable done (jetzt kommts) auf true, bei einem Fehler auf false.

So wir haben jetzt eine Variable die entweder false oder true ist.

In der Klasse In gibt es (ganz unten) eine Funktion namens Done(). Diese liefert jeweils den Wert von done zurück (true/false)

Nun liefert done() irgendwann einmal true (wenn kein fehler aufgetreten ist usw.). Das Programm springt in die Schleife (die du richtig interpretiert hast)

while(j=<i) {Out.print('*'); j++;}

Diese Zeile gibt nun ein * aus (und zwar so oft wie gross deine Zahl ist)

out.println bedeutet dass er ein Enter Zeichen (Carriage Return/Line Feed) ausgibt, also einen Zeilenschub. Das ln (nach print) steht für line (also Print Line)

Nun wird wieder von der Tastatur eingelesen. Nachdem er fertig eingelesen hat ist die Schleife zuende und er beginnt wieder von vorne (sie wurde ja vorher mit true ausgewertet und durchlaufen und wird nun nach vollständigem Durchlauf wieder ausgewertet. Angenommen du hättest jetzt was falsches eingegeben (einen Buchstaben), so würde die Schleife übersprungen und das Programm beendet werden.
  



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Besucher machen immer Freude, wenn nicht beim KOMMEN, dann doch beim GEHEN

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
....
Re(4): Java - While Frage
17.01.2003, 09:14:08
ok, machmas kurz:

Die Funktion liest das von dir eingegebene Zeichen ein. Sie versucht es nun umzuwandeln (in den Datentyp integer). Wenn dies gelingt, wird die Variable done auf true gesetzt.

Wenn dies jedoch nicht gelingt, so ist der try/catch Block (dieser ist für Exception Handling, also Ausnahmebehandlungen da) da. Angenommen du würdest die Variable so einfach umwandeln, würde das Programm eine Fehlermeldung ausgeben und sich beenden (ungültige Anweisung, was weiss ich).
Der try/catch Block fängt das jedoch ab (try ... Versuch das ... catch .. Wenn eine Fehlermeldung auftritt, fang sie ab). Wenn du nun einen Buchstaben eingegeben hast, dann kann er das nicht in einen Datentyp integer wandeln, er wirft eine Fehlermeldung (nennt sich auch throw) und springt in den catch Block. Dort wird die Variable done auf false gesetzt.


Nun hast du die Tastaturabfrage beendet (du hast was eingegeben) und mit Enter bestätigt. Er springt nun also zur nächsten Anweisung: nämlich:
while(In.done()){

done ist eine funktion die entweder true oder false liefert (je nachdem ob die Umwandlung geklappt hat oder nicht).

du könntest auch direkt auf die Variable true zugreifen, nur widerspräche das dem Konzept der Objektorientierung (man greift nicht auf Variablen zu, diese dürfen nur von klassen funktionen gehandhabt werden sondern man benutzt methoden; das ist in etwa das Prinzip der Kapselung)

Fall 1: done liefert true: das beudeutet die Umwandlung war erfolgreich und man kann was damit anfangen (die Schleife wird ausgeführt)
Fall 2: die Bedingung damit die schleife ausgeführt wird ist false, die schleife wird übersprungen und weil das Programm zuende ist wird es beendet.





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Besucher machen immer Freude, wenn nicht beim KOMMEN, dann doch beim GEHEN

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung