studyklar
GdI 2 · Übungsblatt 2 · Aufgabe 4

Postleitzahl: Region aus der ersten Ziffer mit switch

An der ersten Ziffer einer Postleitzahl sieht man die Region: 6 ist Westen, 0 ist Osten. Das Programm liest die Postleitzahl als Text und ordnet die erste Ziffer mit switch zu. Rechts steht das fertige Programm, die Zeilen zum aktuellen Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 4

Es soll ein Programm geschrieben werden, bei dem man in der Konsole eine deutsche Postleitzahl eingibt, und das Programm gibt an, in welcher Region sich der zugehörige Ort befindet. Hierfür ist die erste Ziffer ausschlaggebend: „Norden“ hat als erste Ziffer 1 oder 2, „Mitte“ 3, „Westen“ 4, 5 oder 6, „Osten“ 0 oder 9, „Süden“ 7 oder 8.

Da Postleitzahlen auch mit 0 beginnen können, müssen sie als String eingelesen werden. Das erste Zeichen eines Strings s können Sie mittels „s.substring(0, 1)“ als String ("5") oder mit „s.charAt(0)“ als char (Zeichen, z. B. '5') ermitteln.

Zehn mögliche erste Ziffern, fünf Regionen. Statt einer langen Kette von if … else if … nimmt man switch: Es vergleicht einen Wert mit mehreren festen Fällen und wählt den passenden.

Merke: Eine Postleitzahl ist kein Rechenwert, sondern eine Kennung aus Ziffern. Solche Werte liest man als Text, damit führende Nullen erhalten bleiben.
  1. Die Postleitzahl als Text einlesen.
  2. Das erste Zeichen herausholen.
  3. Mit switch die Region zuordnen.
  4. Ausgeben.

Die Postleitzahl als Text einlesen

        System.out.print("Postleitzahl: ");        String plz = scanner.nextLine();

Läse man die Postleitzahl mit nextInt(), würde aus 01067 (Dresden) die Zahl 1067. Die führende Null ist weg, die erste Ziffer wäre 1, und das Programm sagte „Norden“ statt „Osten“.

Darum liest scanner.nextLine() die Eingabe als String, also als Text. Dann bleibt jedes Zeichen genau so, wie es eingetippt wurde.

Das erste Zeichen herausholen

        String beginn = plz.substring(0, 1);
plzPosition 0substring(0, 1)
"67663"6"6"
"01067"0"0"

plz.substring(0, 1) schneidet ein Stück aus dem Text: ab Position 0 (das erste Zeichen, Java zählt ab 0) bis vor Position 1. Das ist genau ein Zeichen. Aus "67663" wird "6".

Die Aufgabe nennt auch charAt(0). Das liefert ein einzelnes Zeichen vom Typ char, geschrieben mit einfachen Anführungszeichen: '6'. Beides geht; die Fälle im switch müssen dann zum Typ passen. Mit char beginn = plz.charAt(0); schreibt man sie mit einfachen Anführungszeichen: case '1', '2' -> "Norden";.

Noch 4 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Das Programm Postleitzahlen

switch über das erste Zeichen

Abbildung 1Das Programm Postleitzahlen

switch über das erste Zeichen

import java.util.Scanner; public class Postleitzahlen {     public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);         System.out.print("Postleitzahl: ");        String plz = scanner.nextLine();         String beginn = plz.substring(0, 1);        String region = switch (beginn) {            case "1", "2" -> "Norden";            case "3" -> "Mitte";            case "4", "5", "6" -> "Westen";            case "7", "8" -> "Süden";            case "0", "9" -> "Osten";            default -> "unbekannt";        };         System.out.println("Region: " + region);    }}
LegendeDas ganze Programm.