Lista: Wyszukiwanie oraz publikacja danych

0

Witam wszystkich.
Mam lekki problem z projektem, który muszę zrobić, a dokładniej mówiąc:
Ewidencja mandatów i pkt karnych.
Mam już część projektu tj. dodawanie ukaranych, pokazywanie całej listy ukaranych, ale borykam się z wyszukiwaniem danego kierowcy po Stringu jakim jest Pesel.
Próbowałem już wielu metod jednak, żadna nie przyniosła oczekiwanego efektu.
Czy ktoś byłby w stanie rzucić okiem i ew. w jakiś sposób pomóc?
A tutaj kodzik (ew w załączniku również)
Baza




import static com.sun.org.apache.xalan.internal.lib.ExsltDynamic.map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
import static jdk.nashorn.internal.objects.NativeArray.map;



public class Baza {

    public static final int Dodaj_kierowce = 0;
    public static final int Wyswietl_Wszystkich = 1;
    public static final int Wyjdz = 2;
    public static final int WYSZUKAJ=3;
    
      private static List<Kierowca> kierowcy;
    
    public static void main(String[] args) {
        kierowcy = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        int option = 0;
        int n=100;
                       
        do {
            printOptions();
            try {
                option = sc.nextInt();
                sc.nextLine();
            } catch (InputMismatchException exc) {
                sc.nextLine();
                System.out.println("--------------------");
                System.out.println("Dane w nieprawidłowym formacie ");
                continue;
            }

            switch (option) {
            case Dodaj_kierowce:
                try {
                    addCompetitor(sc);
                } catch (InputMismatchException e) {
                    sc.nextLine();
                    System.out.println("--------------------");
                    System.out.println("Błąd odczytu danych");
                }
                break;
            case Wyswietl_Wszystkich:
                printCompetitors();
                break;
            case Wyjdz:
                break;
                
                
            case WYSZUKAJ:
                search();
        break;
            }
        } while (option != Wyjdz);

        sc.close();

    }

    private static void search(){
      //  int pozycja;
        //pozycja=kierowcy.indexOf("osoba");
        //System.out.println(pozycja);
        
        
       for (int i=0; i<=kierowcy.size()-1; i++) {
            String pesel1 = "92050903839";
        if kierowcy.get(i).getPesel() == pesel1 {
        }
            System.out.println(kierowcy.get(i).getPesel());

//if kierowcy.indexOf() == "92050903839" {

//}
        }
        
    }
           
    
    private static void printCompetitors() {
        System.out.println("--------------------");
        System.out.println("Lista ukaranych:");
        for (Kierowca p: kierowcy) {
            System.out.println(p);
        }
    }

    private static void addCompetitor(Scanner sc) throws InputMismatchException {
       
        Kierowca osoba = new Kierowca();
        System.out.println("--------------------");
        System.out.println("Dodawanie nowego kierowcy: ");
        System.out.println("PESEL:");
        osoba.setPesel(sc.nextLine());
        System.out.println("Imię: ");
        osoba.setFirstName(sc.nextLine());
        System.out.println("Nazwisko");
        osoba.setLastName(sc.nextLine());
        System.out.println("Mandaty:");
        osoba.setMan(sc.nextInt());
        System.out.println("Punkty karne:");
        osoba.setAge(sc.nextInt());
        sc.nextLine();

        kierowcy.add(osoba);
    }

    private static void printOptions() {
        System.out.println("--------------------");
        System.out.println("Dostępne opcje: ");
        System.out.println(Dodaj_kierowce + " - Dodaj kierowce");
        System.out.println(Wyswietl_Wszystkich + " - Wyświetl kierowców");
        System.out.println(Wyjdz + " - Wyjście z programu");
        System.out.println(WYSZUKAJ+ " - Wyszukaj");
        System.out.println("Wybierz opcję: ");
    }
}

Kierowca

public class Kierowca {
    private String pesel;
    private String Imie;
    private String Nazwisko;
    private int man;
    private int pkt;
    
    
    public String getPesel() {
        return pesel;
    }
    public void setPesel(String pesel) {
        this.pesel = pesel;
    }
    public String getFirstName() {
        return Imie;
    }
    public void setFirstName(String Imie) {
        this.Imie = Imie;
    }
    public String getLastName() {
        return Nazwisko;
    }
    public void setLastName(String Nazwisko) {
        this.Nazwisko = Nazwisko;
    }
        public int getAge() {
        return pkt;
    }
    public void setAge(int pkt) {
        this.pkt = pkt;
    }
        public int getMan() {
        return man;
    }
    public void setMan(int man) {
        this.man = man;
    }

    @Override
    public String toString() {
        return pesel + " " + Imie + " " + Nazwisko + " - " + man + "zł mandatu, " + pkt + " punkty karne";
    }
}
2
  1. Przenieś kod do wnętrza, wtedy wypisze ci kierowcę jeśli będzie miał taki pesel.
if kierowcy.get(i).getPesel() == pesel1 {
    System.out.println(kierowcy.get(i).getPesel());
}
  1. Widzę, że porównujesz Stringi za pomocą == zamiast za pomocą metody equals, to może powodować problemy, akurat nie w tym przypadku ale zmień to koniecznie.

  2. Pętla for (int ... wygląda lamersko, zmień na

kierowcy.stream().forEach((kierowca) -> {
       System.out.println(kierowca);
});

lub jeżeli korzytasz z wersji javy <8

String pesel1 = "92050903839";
for (Kierowca kierowca : kierowcy) {
        if kierowca.equals(pesel1) 
...
  1. String pesel1 = "92050903839"; - magic number zaszyty w kodzie, poza tym nawet gdyby była to zmienna to warto zainicjalizować ją przed pętlą a nie za każdym obiegiem.
0
Mackooo napisał(a):
  1. Lamersko nie lamersko ważne że działa ;P

Równie dobrze można pisać w kodzie maszynowym samymi jedynkami i zerami ;_;

1 użytkowników online, w tym zalogowanych: 0, gości: 1