Musterabgleich
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 37 von 59.
Mit Pattern Matching in Java kannst du prüfen, ob ein Objekt einen bestimmten Typ hat, und Komponenten daraus extrahieren. Dadurch werden Typprüfungen und Typumwandlungen vereinfacht.
Sehen wir uns an, wie man Pattern Matching mit instanceof verwendet:
Object obj = "Hello";
if (obj instanceof String str) {
// str wird automatisch in String umgewandelt
System.out.println(str.toUpperCase());
}Nach der Ausführung des obigen Codes lautet die Ausgabe:
"HELLO"
Du kannst Musterprüfungen auch mit else if verketten:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}Nach der Ausführung des obigen Codes enthält result Folgendes:
“Number: 42”
Aufgabe
EinfachErstelle eine Methode namens processValue, die ein Argument entgegennimmt:
- Ein Object (
value), das verschiedene Typen haben kann
Die Methode soll Pattern Matching mit instanceof verwenden, um den Wert zu verarbeiten und eine Zeichenkette gemäß den folgenden Regeln zurückzugeben:
- Wenn es sich um einen Integer handelt: Gib "Number: " gefolgt vom verdoppelten Wert zurück
- Wenn es sich um einen String handelt: Gib "Text: " gefolgt vom Wert in Großbuchstaben zurück
- Wenn es sich um einen Boolean handelt: Gib "Boolean: " gefolgt vom entgegengesetzten Wert zurück (true wird zu false und umgekehrt)
- Bei jedem anderen Typ: Gib "Unknown" zurück
Probier es selbst
import java.util.Scanner;
public class Main {
public static String processValue(Object value) {
// TODO: Verwende Pattern Matching mit instanceof, um den Wert zu verarbeiten
// Wenn es ein Integer ist: gib "Number: " + (value * 2) zurück
// Wenn es ein String ist: gib "Text: " + value.toUpperCase() zurück
// Wenn es ein Boolean ist: gib "Boolean: " + (!value) zurück
// Für jeden anderen Typ: gib "Unknown" zurück
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String type = scanner.nextLine();
String inputValue = scanner.nextLine();
Object value = switch(type) {
case "Integer" -> Integer.parseInt(inputValue);
case "String" -> inputValue;
case "Boolean" -> Boolean.parseBoolean(inputValue);
default -> inputValue;
};
System.out.println(processValue(value));
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitungÜbe selbstständig: Online-Java-Compiler