EIDI-Crashkurs 2020 › Aufgabe 108 › Antwort auf: Aufgabe 108
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'
).