Menu
Coddy logo textTech

Wyszukiwanie na liście: indexOf

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 6 z 65.

Gdy chcesz znaleźć miejsce, w którym znajduje się określony element na liście, Dart udostępnia metodę indexOf(). Ta metoda przeszukuje listę i zwraca indeks pierwszego wystąpienia szukanego elementu.

Metoda indexOf() przyjmuje jako parametr element, który chcesz znaleźć, i zwraca liczbę całkowitą. Jeśli element znajduje się na liście, zwraca jego indeks (liczony od 0). Jeśli element nie zostanie znaleziony, zwraca -1.

List<String> fruits = ['apple', 'banana', 'orange', 'banana'];

int appleIndex = fruits.indexOf('apple');    // 0
int bananaIndex = fruits.indexOf('banana');  // 1 (pierwsze wystąpienie)
int grapeIndex = fruits.indexOf('grape');    // -1 (nie znaleziono)

Ta metoda jest szczególnie przydatna, gdy musisz znać pozycję elementu przed wykonaniem operacji, takich jak wstawianie lub usuwanie w określonych miejscach. Pamiętaj, że indexOf() znajduje tylko pierwsze dopasowanie, więc jeśli element występuje wiele razy, otrzymasz indeks jego pierwszego wystąpienia.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który zarządza systemem wyszukiwania książek w bibliotece, znajdując położenie konkretnych książek na półkach. Twój program powinien:

  1. Wczytać ciąg znaków reprezentujący nazwę sekcji biblioteki
  2. Wczytać wiele ciągów znaków reprezentujących tytuły książek na półce (wczytywanie zakończy się, gdy otrzymasz pusty ciąg znaków)
  3. Wczytać ciąg znaków reprezentujący tytuł książki, której należy szukać
  4. Użyć metody indexOf(), aby znaleźć pozycję szukanej książki
  5. Wyświetlić wyniki wyszukiwania w dokładnie takim formacie, jak pokazano poniżej

Na przykład, jeśli sekcja biblioteki to "Science Fiction", książki to "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game", a szukaną książką jest "Foundation", Twój program powinien wyświetlić:

Library Section: Science Fiction
Books on shelf: [Dune, Foundation, Neuromancer, Foundation, Ender's Game]
Searching for: Foundation
Book found at position: 1
Status: Book located successfully

Jeśli sekcja biblioteki to "Mystery", książki to "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon", a szukaną książką jest "Gone Girl", Twój program powinien wyświetlić:

Library Section: Mystery
Books on shelf: [Sherlock Holmes, Agatha Christie, The Maltese Falcon]
Searching for: Gone Girl
Book found at position: -1
Status: Book not available

Twój program musi używać metody indexOf(), aby wyszukać książkę. Gdy książka zostanie znaleziona (position >= 0), wyświetl "Book located successfully". Gdy książka nie zostanie znaleziona (position = -1), wyświetl "Book not available". Pamiętaj, że jeśli książka występuje kilka razy, metoda indexOf() zwraca pozycję jej pierwszego wystąpienia.

Spróbuj swoich sił

import 'dart:io';

void main() {
  // Wczytaj nazwę działu biblioteki
  String? section = stdin.readLineSync();
  
  // Wczytuj tytuły książek aż do napotkania pustego ciągu znaków
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // Wczytaj tytuł książki do wyszukania
  String? searchBook = stdin.readLineSync();
  
  // TODO: Napisz swój kod poniżej
  // Użyj metody indexOf(), aby znaleźć pozycję książki
  
  // Wyświetl wyniki w wymaganym formacie
  print('Library Section: $section');
  print('Books on shelf: $books');
  print('Searching for: $searchBook');
  // Wyświetl pozycję i status na podstawie wyników wyszukiwania
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Dart online