Antwort auf: Aufgabe 108

EIDI-Crashkurs 2020 Aufgabe 108 Antwort auf: Aufgabe 108

#3342

Dieser Schritt wird gemacht, um das Zeichen (z. B. '4') in eine Ziffer (z. B. 4) umzuwandeln.

Hintergrund:

int c = '4';
System.out.println(c);

Dieser Code gibt den Wert 52 aus, weil 52 der ASCII-Wert des Zeichens ‘4’ ist und wir das Zeichen in einer int-Variable speichern. Genauso sieht das auch bei der chars()-Methode aus. Diese gibt dir keinen CharStream (diese Klasse existiert nicht) sondern einen IntStream. Um aus dem Zeichen ‘4’ (welches im Stream als 52 gepseichert ist) nun die “richtige” Ziffer 4 zu machen, müssen wir das Zeichen ‘0’ subtrahieren.  Dazu muss man die ASCII-Werte nicht kennen – es genügt zu wissen, dass die Entfernung zwischen ‘4’ und ‘0’ genau 4 beträgt. Das kannst du aber auch an der ASCII-Tabelle sehen. ‘4’ hat den Wert 52, ‘0’ hat den Wert 48, 52-48 ergibt 4. Genauso wäre das bei Buchstaben. Um aus einem Keinbuchstaben einen Großbuchstaben zu machen schreibt man c-'a'+'A', d. h. man subtrahiert erst das kleine a, um den Offset (Entfernung des Zeichens zum kleinen a) zu kennen (bspw. 3, falls c ein 'd' ist) und addiert diesen Offset dann zum großen A (z. B. 'A'+3 == 'D').