Musterabgleich
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 37 von 59.
Pattern Matching in Java ermöglicht es Ihnen zu prüfen, ob ein Objekt einen bestimmten Typ hat, und Komponenten daraus zu extrahieren. Es vereinfacht Typprüfungen und Casting-Operationen.
Schauen wir uns an, wie man Pattern Matching mit instanceof verwendet:
Object obj = "Hello";
if (obj instanceof String str) {
// str wird automatisch in einen String umgewandelt
System.out.println(str.toUpperCase());
}Nach Ausführung des obigen Codes lautet die Ausgabe:
"HELLO"
Sie können Pattern-Matching-Prü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
EinfachErstellen Sie eine Methode namens processValue, die ein Argument entgegennimmt:
- Ein Objekt (
value), das von verschiedenen Typen sein kann
Die Methode sollte Pattern Matching mit instanceof verwenden, um den Wert zu verarbeiten und einen String basierend auf diesen Regeln zurückzugeben:
- Wenn es ein Integer ist: geben Sie "Number: " gefolgt vom verdoppelten Wert zurück
- Wenn es ein String ist: geben Sie "Text: " gefolgt vom Wert in Großbuchstaben zurück
- Wenn es ein Boolean ist: geben Sie "Boolean: " gefolgt vom gegenteiligen Wert zurück (true wird zu false und umgekehrt)
- Für jeden anderen Typ: geben Sie "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