(Początkujący) Hej stworzyłem sobie Klase samochód wyścig i Main do sprawdzenia wszystkiego. W klasie wyscig stworzyłem metodę dodajZawodnika, pokazZawodnikow i najszybszyZawodnik. Wszystko jest okay ale teraz sprawdzam wszystko w klasie Main i dupa. Tworząc obiekt Wyscig chcialbym aby tworzac ten obiekt Od razu w atrybucie byla moja metoda ktora znajduje najszybszego zawodnika pod wzgledem czasuDoSetki. Czyli tworze kilka aut. potem tworze wyscig (w którym ma byc ukryta metoda najlepszyZaowdnik), dodaje autka do wyscigu i Run. Wyskakuje mi blad. Coś źle robie z klasą Wyśgig i z jego atrybutem zwyciezca. Jak to naprawić ?
Klasa Samochód:
public class Samochod {
private String marka;
private String model;
private int moc;
private double czasDoSetki;
public Samochod(String marka, String model, int moc, double czasDoSetki) {
this.marka = marka;
this.model = model;
this.moc = moc;
this.czasDoSetki = czasDoSetki;
}
public String getMarka() {
return marka;
}
public void setMarka(String marka) {
this.marka = marka;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getMoc() {
return moc;
}
public void setMoc(int moc) {
this.moc = moc;
}
public double getCzasDoSetki() {
return czasDoSetki;
}
public void setCzasDoSetki(double czasDoSetki) {
this.czasDoSetki = czasDoSetki;
}
public String toString(){
return getClass().getSimpleName() + " " + marka + " " + model + " " + moc + " km " + czasDoSetki + " seukundy";
}
}
Klasa Wyścig:
import java.util.ArrayList;
import java.util.List;
public class Wyscig {
private Samochod zwyciezca;
private static List<Samochod> zawodnicy = new ArrayList<>();
public Wyscig() {
this.zwyciezca = najlepszyZawodnik();
System.out.println(zwyciezca);
}
public Samochod getZwyciezca() {
return zwyciezca;
}
public void setZwyciezca(Samochod zwyciezca) {
this.zwyciezca = zwyciezca;
}
public List<Samochod> getZawodnicy() {
return zawodnicy;
}
public void setZawodnicy(List<Samochod> zawodnicy) {
this.zawodnicy = zawodnicy;
}
public void dodajSamochod(Samochod samochod) {
if (!zawodnicy.contains(samochod)) {
zawodnicy.add(samochod);
}
}
public void pokazZawodnikow() {
for (Samochod samochod : zawodnicy) {
System.out.println(samochod);
}
}
public Samochod najlepszyZawodnik() {
Samochod najszybszy = zawodnicy.get(0);
for (Samochod samochod : zawodnicy) {
if (najszybszy.getCzasDoSetki() > samochod.getCzasDoSetki()) {
najszybszy = samochod;
}
}
return najszybszy;
}
}
Klasa Main:
public class Main {
public static void main(String[] args) {
Samochod samochod0 = new Samochod("Audi", "RS6", 550, 5.5);
Samochod samochod1 = new Samochod("Nissan", "370Z", 330,6.3);
Samochod samochod2 = new Samochod("BMW", "e38", 240, 7.8);
Wyscig wyscig = new Wyscig(); // tutaj ma być ukryta atrybut z metodą - najlepszyZaowdnik;
wyscig.dodajSamochod(samochod0);
wyscig.dodajSamochod(samochod1);
wyscig.dodajSamochod(samochod2);
wyscig.pokazZawodnikow();
wyscig.najlepszyZawodnik();
}
}