Witam! Mam do zrobienia program, który dodaje zawodników do konkretnych drużyn(drużyny i zawodnicy są przechowywane na listach). No i żeby było wiadomo do której drużyny mam dodać zawodników zrobiłam metodę, która wykorzystuje funkcję lastIndeksOf, która zwraca numer indeksu na liście.
metoda wygląda tak:
public int szukajIndeksDruzyn(Druzyna a){
int lastOccurence = listaDruzyn.lastIndexOf(a);
return lastOccurence; }
lub w II wersji tak
public int szukajIndeksDruzyn(Druzyna a){
int lastOccurence = listaDruzyn.lastIndexOf(a);
if(lastOccurence != -1)
System.out.println("Znaleziono na pozycji " + lastOccurence);
else
System.out.println("Nie znaleziono");
return lastOccurence; }
Gdy uruchamiam metodę w tej 2 wersji tylko po to by wyświetlić komunikat, na której pozycji jest druzyna wszystko działa dobrze.
Problem zaczyna się, gdy chcę do którejś drużyny po raz drugi dodać zawodnika. Za pierwszym razem wszystko jest ok, ale za drugim jako indeks zwracana jest wartość -1. Wiecie dlaczego? Poniżej wstawiam kod z maina, gdzie wywołuję tę metodę.
System.out.println("Podaj nazwę drużyny:");
String a = input.next();
Druzyna b = new Druzyna(a);
if ( t.szukajIndeksDruzyn(b)!= -1) {
if(t.getListaDruzyn().get(c).rozmiar()<8){
System.out.println("Podaj imię zawodnika:");
String i = input.next();
System.out.println("Podaj nazwisko zawodnika:");
String n = input.next();
Zawodnik z = new Zawodnik(i, n);
t.getListaDruzyn().get( t.szukajIndeksDruzyn(b)).dodajZawodnika(z);
}
else {System.out.println("Nie można dodać więcej zawodników");}}
else {
System.out.println("Nie znaleziono podanej druzyny");
}