EIDI-Crashkurs 2020 › Aufgabe 108
- Dieses Thema hat 1 Antwort und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 8 Monaten von Stefan Berktold.
- 
AutorBeiträge
- 
Amelie Lemmen Ich habe eine Frage zu Aufgabe 108. Dort wird ja mit chars() ein IntStream über die Zeichen von hex gebildet. Wieso wird in der Lösung folgender Schritt gemacht: return digit – ‘0’; ? Ich verstehe “-‘0′” in diesem Zusammenhang nicht. Danke im Voraus! 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 einenIntStream. 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 manc-'a'+'A', d. h. man subtrahiert erst das kleine a, um den Offset (Entfernung des Zeichens zum kleinena) zu kennen (bspw. 3, falls c ein'd'ist) und addiert diesen Offset dann zum großenA(z. B.'A'+3=='D').
- 
AutorBeiträge
