Prosta sprawa. Jest sobie klasa:
class studenciak {
String nazwisko;
String imie;
String ocena;
}
Jest sobie funkcja która wczytuje z pliku linijka po linijce tekst do obiektu klasy studenciak, a obiekty te do Listy obiektów tej klasy (Arraylist)
static List<studenciak> pobierz(List<studenciak> std)
throws IOException
{
FileReader fr = new FileReader("studenci.txt");
BufferedReader br = new BufferedReader(fr);
String linia;
String tmp[] = new String[3];
studenciak st = new studenciak();
while((linia = br.readLine()) != null)
{
tmp=linia.split(" ");
st.nazwisko = tmp[0];
st.imie = tmp[1];
st.ocena = tmp[2];
std.add(st);
}
return std;
}
Problem polega na tym, że po wyjściu z pętli while wszystkie obiekty w liście są takie same. Dokładnie są równe ostatniemu dodanemu obiektowi.
Wyświetlając zawartość listy jeszcze w pętli (dodaje sobie dodatkowy licznik- int licz,) to wszystko jest ok.
System.out.print(std.get(licz).nazwisko+" ");
System.out.print(std.get(licz).imie+" ");
System.out.print(std.get(licz).ocena+" ");
Wyświetlając zawartość listy za pętlą juz jest kaszanka i wszystkie rekordy sa takie same == ostatniej wprowadzonej pozycji
Sprawdziłem to wyświetlając elementy ze sztywno przypisanym indeksem.
System.out.print(std.get(0).nazwisko+" ");
System.out.print(std.get(1).nazwisko+" ");
System.out.print(std.get(2).nazwisko+" ");
I nie mam już pomysłu co może być nie tak.