Witam, mam następujący problem. Otóż nie mam pomysłu jakie warunki trzeba napisać, aby program zadziałał dla dwóch tych samych książek w mojej bibliotece. Dam może trochę kodu to się wyjaśni.
void wypozyczKsiazke(String ksiazka)
{
boolean koniec=false;
if(listaK.size()>0)
{
int pom=0;
while(koniec==false || pom<listaK.size())
{
if((listaK.get(pom).dajTytul()).equals(ksiazka))
{
if(listaK.get(pom).czyWypozyczona())
{
System.out.println("Przykro nam, książka jest już wypożyczona.");
}
else
{
listaK.get(pom).wypozycz();
System.out.println("Udało się wypożyczyć książkę: " + listaK.get(pom).dajTytul());
}
koniec=true;
}
else
{
System.out.println("Przykro nam, nie mamy takiej książki");
}
pom++;
}
}
}
Tu oczywiście metoda wypożyczająca książki.
teraz to co jest w mainie:
Biblioteka pierwsza = new Biblioteka( "Armi Krajowej 24" );
Biblioteka druga = new Biblioteka( "Plac Grunwaldzki 6" );
pierwsza.dodajKsiazke( new Epopeja( "Pan Tadeusz","Litwa" ) );
pierwsza.dodajKsiazke( new Epopeja( "Pan Tadeusz","Litwa" ) );
pierwsza.dodajKsiazke( new KsiazkaFantastyczna( "Gra o Tron","Eddard Stark" ) );
pierwsza.dodajKsiazke( new Kryminal( "Tozsamosc Bourne'a","Jason Bourne" ) );
pierwsza.dodajKsiazke( new KsiazkaNaukowa( "Analiza Matematyczna","Matematyka" ) );
System.out.println( "Wypozyczanie Pana Tadeusza" );
pierwsza.wypozyczKsiazke( "Pan Tadeusz" );
pierwsza.wypozyczKsiazke( "Pan Tadeusz" );
druga.wypozyczKsiazke( "Pan Tadeusz" );
Teraz tak - program ma wypisać następująco:
Udało się wypożyczyć książkę: Pan Tadeusz
Udało się wypożyczyć książkę: Pan Tadeusz
Przykro nam, nie mamy takiej książki //bo to jest druga biblioteka, która jest pusta
Działa, to niezgodnie z oczekiwaniem - zmienna boolean koniec przewidziana była do zakonczenia petli, jednak to nie działa jak powinno, program poza tym leci po wszystkich książkach(ale to chyba kwestia, że ten else powinien być wyżej - oczywiscie nie jako else).
Wszystko jest ok dla niepowtarzających się książek(panów tadeuszów), ale jak są dwie takie same, to już świruje program ...
Prośba do Was o pomoc, jak zmienić metodę, aby poprawnie działał dla większej ilości książek o tym samym tytule ? (być może lepsza pętla foreach ?)