Implementierung von readInt()
Geizhals » Forum » Programmierung » Implementierung von readInt() (6 Beiträge, 67 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): Implementierung von readInt()
02.03.2003, 10:28:06
static int readInt() {
  int val = 0;
  char ch = In.read();
  while ('0' <= ch && ch <='9') {
    val = 10 + val + (ch - '0');
    ch = In.read();
  }
  return val;
}



hi, eigentlich ist es ganz einfach .. du musst dir nur vor augen halten dass das was du eingibst eigentlich ein Buchstabe ist, also 0 ist keine Zahl, sondern eine Buchstabe ....

Im asciicode hat 0 den Wert 48(Decimal) ... Dass du ein Zeichen hast, das zeigen dir die ' die immer um den 0er herumstehen ...
Dei Funktion readInt macht eigentlich nur das: Sie schaut ob das was du eingegeben hast eine Zahl ist. ansonsten bricht sie ab.

und jetzt zeile für zeile:
du definierst die variable ch, und weist ihr den wert zu den EIN Character hat, der von der Tastatur eingelesen wird (du müsstest mal die In.read ins Forum schreiben, dann wärs einfacher). Naja .. Jedenfalls hast du jetzt eine CHARACTER Variable. Du überprüfst nun ob diese Variable im Bereich liegt in dem ein Character eine Zahl darstellt .. also eigentlich von 0 - 9 (ASCII Werte 48-57). Liegt der eingegebene Character nun also in diesem Bereich, so kann man ihn in eine Zahl umwandeln.
Sagen wir der Character ist ein '3'. Er hätte also den ASCII Wert 51. Die '0' hat wie wir schon festgestellt haben den Wert 48.
Die eine Zeile dürfte nur sinn machen wenn statt einem + ein * dortsteht ...
val = 10 * val + (ch - '0');
Eingabe: '3' '7' '1'
1. Durchgang:
val = 10 * 0 + 51-48 = 3
2.Durchgang
val = 10 * 3 + 55-48 = 37
3.Durchgang
val = 37 * 10 + 49-48 = 371

Und am Schluss wird das jetzt in Integer Form verfügbare Ergebnis übergeben ..
aus



Besucher machen immer Freude, wenn nicht beim KOMMEN, dann doch beim GEHENThey say when you play a Microsoft CD backward you can hear satanic messages...
But that's nothing, if you play it forward it will install Windows


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