Musterabgleich
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 37 von 59.
Pattern Matching in Java ermöglicht es dir zu prüfen, ob ein Objekt einen bestimmten Typ hat, und Komponenten daraus zu extrahieren. Es vereinfacht Typüberprüfungen und Umwandlungsoperationen.
Sehen wir uns an, wie man Mustervergleich mit instanceof verwendet:
Object obj = "Hello";
if (obj instanceof String str) {
// str wird automatisch zu String gecastet
System.out.println(str.toUpperCase());
}Nach 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:
“Number: 42”
Aufgabe
EinfachErstelle eine Methode namens processValue, die ein Argument entgegennimmt:
- Ein Object (
value), das unterschiedlichen Typen angehören kann
Die Methode soll Pattern Matching mit instanceof verwenden, um den Wert zu verarbeiten und basierend auf diesen Regeln einen String 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)
- Für jeden 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