• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

java wyszukiwanie podanej nazwy w ArrayList

Cloud VPS
0 głosów
2,778 wizyt
pytanie zadane 3 maja 2017 w Java przez Nadann Początkujący (290 p.)

Hej, robie maly projekt Car Shop ktory miedzy innymi ma za zadanie znalezc auto w ArrayList po marce i modelu.Wklejam czesc projektu ktory powinien mniej wiecej zobrazowac o co mi chodzi. Jest stworzona klasa Samochod gdzie sa podstawowe dane dot auta np model, marka,kolor itp, Nastepnie klasa z opcjami, gdzie mamy ArrayListe w ktorej zapisuje dodane auta i wyszukuje auta po marce i modelu. To jest ta lista:

public static final int MAX_ILOSC_MIEJSC = 1000;
List<Samochod> listaAut = new ArrayList<Samochod>(MAX_ILOSC_MIEJSC);

Kod metody wyszukujacej wyglada tak: 

public void wyszukujPoMarceIModelu(Samochod s) {
		System.out.println("Wyszukiwanie samochodu po marce i modelu:");
		System.out.println("Podaj marke: ");
		String podanaMarka = skaner.next();
		System.out.println("Podaj model: ");
		String podanyModel = skaner.next();
		System.out.println("Znaleziono w aktualnej ofercie: ");
		 for (Samochod samochod : listaAut) {

	           if (podanaMarka.equals(s.getClass().getSimpleName()) || podanyModel.equals(s.getModel())) {
	                System.out.println(samochod);
	            }
		 }

wg mnie ta metoda jest jak najbardziej ok i powinna dzialac, ale chcac wywolac ja w aplikacji glownej w switch-u:

case WYSZUKAJ_AUTO:
				opcje.wyszukujPoMarceIModelu(Samochod s);
				break;

Nie moge podac jako parametr metody Samochod s, ani s, ani tez samochod...Zwyczajnie nie wiem jaki parametr do tej metody podac. Pewnie rozwiazanie jest banalnie proste,ale niestety od dluzszego czasu nie mam pomyslu jak to zrobic. Moze ktos ma jakis pomysl? 

 

1 odpowiedź

+1 głos
odpowiedź 3 maja 2017 przez KubenQPL Maniak (62,840 p.)

Jak już wywołujesz metodę to nie musisz podawać typu, wystarczy samą zmienną:

Samochod s = new Samochod();
...
    case WYSZUKAJ_AUTO:
        opcje.wyszukujPoMarceIModelu(s);
    break;

Potem w tej metodzie wyszukujPoMarceIModelu porównujesz do samochodu podanego w parametrze a nie z listaAut a domyślam się że miało porównywać podaną Markę i Model do samochodów z listy, więc powinieneś zmienić w if'ie s na samochod. Nie wiem jak wygląda twoja klasa Samochod ale powinna mieć zmienne typu String model i marka więc porównuj te zmienne. Wypisując samochod powinieneś skorzystać z metody toString. W if'ie powinna być bramka AND ( && ) bo jeśli wyszukujesz po marce i modelu to oba mają się zgadzać.

         for (Samochod samochod : listaAut) {
 
               if (podanaMarka.equals(samochod.getMarka()) && podanyModel.equals(samochod.getModel())) {
                    System.out.println(samochod.toString());
                    
                }
         }

Zmień też nazewnictwo bo nazwa metody wyszukujPoMarceIModelu jest trochę za długa, nazwij poprostu wyszukaj lub wyszukajSamochod, bo jeśli będziesz potrzebował wyszukiwania po innych parametrach to po prostu przeciążysz tą metodę. Pomijając fakt że powinno się nazywać po angielsku ale póki to robisz dla siebie to nie jest wymagane.

komentarz 3 maja 2017 przez Nadann Początkujący (290 p.)
Dzieki za szybka odpowiedz. If juz poprawiony, oczywiscie powienien byc z AND. Sorry za nazewnictwo, poprawie na angielskie, narazie na dosc "brudno" pisze. Klasa samochod jest abstrakcyjna. Niestety nie mozna utworzyc obiektu tej klasy. Po klasie Samochod dziedzicza auta takie jak Opel, Ford i Fiat i to one sa przekazywane jako obiekty do listy. Dlatego potrzebuje wyciagnac auto, ktore jest w mojej ArrayList i z tego wyszukac auto po marce i po modelu.. Troche skomplikowane, mam nadzieje,ze w miare dobrze to tlumacze. Nie wklejam calego kodu bo mam 3 pakiety i calosciowo jakies 16 klas.
komentarz 3 maja 2017 przez Nadann Początkujący (290 p.)
Wyszukiwanie juz dziala jak nalezy. Po prostu nie trzeba bylo nic przekazywac do metody.

Podobne pytania

0 głosów
1 odpowiedź 180 wizyt
0 głosów
1 odpowiedź 309 wizyt
pytanie zadane 3 maja 2019 w Java przez tomey Nowicjusz (120 p.)
+1 głos
1 odpowiedź 739 wizyt

93,455 zapytań

142,450 odpowiedzi

322,719 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...