Aufgabe 108

EIDI-Crashkurs 2020 Aufgabe 108

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #3340 Antworten
    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!

    #3342 Antworten

    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').

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
Antwort auf: Antwort #3342 in Aufgabe 108

Deine Nachricht und Pseudonym (Name) sind für alle einsehbar (Datenschutz).

Deine Information: