Menu
Coddy logo textTech

Suchen mit 'firstWhere'

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 15 von 65.

Wenn Sie ein bestimmtes Element in einer Liste finden müssen, das bestimmte Kriterien erfüllt, bietet die Methode firstWhere() eine effiziente Lösung. Im Gegensatz zu Filter-Methoden, die alle übereinstimmenden Elemente zurückgeben, stoppt firstWhere() die Suche, sobald das erste Element gefunden wird, das Ihre Bedingung erfüllt.

Die Methode firstWhere() nimmt eine Testfunktion entgegen, die für jedes Element true oder false zurückgibt. Sie prüft die Elemente nacheinander, bis sie das erste findet, das den Test besteht, und gibt dieses Element dann sofort zurück.

List<int> numbers = [1, 3, 8, 15, 22, 7];

// Finde die erste gerade Zahl
int firstEven = numbers.firstWhere((number) => number % 2 == 0);
print(firstEven);  // 8

Für Situationen, in denen kein Element Ihrer Bedingung entspricht, bietet firstWhere() einen optionalen orElse-Parameter. Dieser Parameter akzeptiert eine Funktion, die einen Standardwert zurückgibt, wenn keine Übereinstimmung gefunden wird, wodurch verhindert wird, dass Ihr Programm mit einem Fehler abstürzt.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das ein Kundenservicesystem verwaltet, indem es die erste Kundenbeschwerde findet, die sofortige Aufmerksamkeit erfordert. Dein Programm sollte:

  1. Eine Texteingabe lesen, die den Abteilungsnamen darstellt
  2. Mehrere ganzzahlige Eingaben lesen, die Prioritätsstufen von Beschwerden darstellen (die Eingabe endet, sobald du -1 erhältst)
  3. Eine ganzzahlige Eingabe lesen, die den Schwellenwert für dringende Priorität darstellt
  4. Die Methode firstWhere() verwenden, um die erste Beschwerde mit einer Prioritätsstufe zu finden, die größer oder gleich dem Schwellenwert für dringende Priorität ist
  5. Die Kundenserviceergebnisse exakt im unten gezeigten Format ausgeben

Wenn beispielsweise der Abteilungsname "Technical Support" lautet, die Prioritätsstufen 3, 7, 2, 9, 4 sind und der Schwellenwert für dringende Priorität 8 beträgt, sollte dein Programm Folgendes ausgeben:

Department: Technical Support
All complaints: [3, 7, 2, 9, 4]
Urgent threshold: 8
Searching for first complaint >= 8
First urgent complaint: 9
Status: Urgent complaint found - immediate action required

Wenn der Abteilungsname "Billing Department" lautet, die Prioritätsstufen 4, 6, 3, 5 sind und der Schwellenwert für dringende Priorität 7 beträgt, sollte dein Programm Folgendes ausgeben:

Department: Billing Department
All complaints: [4, 6, 3, 5]
Urgent threshold: 7
Searching for first complaint >= 7
First urgent complaint: Not found
Status: No urgent complaints - continue normal processing

Wenn der Abteilungsname "Sales Support" lautet, die Prioritätsstufen 10, 2, 8 sind und der Schwellenwert für dringende Priorität 9 beträgt, sollte dein Programm Folgendes ausgeben:

Department: Sales Support
All complaints: [10, 2, 8]
Urgent threshold: 9
Searching for first complaint >= 9
First urgent complaint: 10
Status: Urgent complaint found - immediate action required

Dein Programm muss die Methode firstWhere() verwenden, um die erste Beschwerdepriorität zu finden, die größer oder gleich dem Schwellenwert für dringende Priorität ist. Wenn keine dringende Beschwerde gefunden wird, gib für die erste dringende Beschwerde "Not found" aus und zeige "No urgent complaints - continue normal processing" als Status an. Wenn eine dringende Beschwerde gefunden wird, gib die Prioritätsstufe aus und zeige "Urgent complaint found - immediate action required" als Status an.

Probier es selbst

import 'dart:io';

void main() {
  // Abteilungsnamen lesen
  String? department = stdin.readLineSync();
  
  // Beschwerde-Prioritätsstufen lesen bis -1
  List<int> complaints = [];
  while (true) {
    int priority = int.parse(stdin.readLineSync()!);
    if (priority == -1) break;
    complaints.add(priority);
  }
  
  // Dringlichkeitsschwellenwert lesen
  int urgentThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Schreiben Sie Ihren Code unten
  // Verwenden Sie die Methode firstWhere(), um die erste Beschwerde >= urgentThreshold zu finden
  
  // Ergebnisse ausgeben
  print('Department: $department');
  print('All complaints: $complaints');
  print('Urgent threshold: $urgentThreshold');
  print('Searching for first complaint >= $urgentThreshold');
  // Ergebnis der ersten dringenden Beschwerde drucken
  // Statusmeldung drucken
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Dart-Compiler