Witam,
w miejscu gdzie uczę się programowania wchodzimy właśnie w temat programowania obiektowego. Nigdy dotąd tego jeszcze nie robiłem i jest to dla mnie dosyć duża nowość przez co mam problemy z pewnym zadaniem, które dostałem do wykonania. Otóż, muszę zdefiniować klasę "Samochód" zawierającą :
pola prywatne : int vMax
double paliwoWzbiorniku, zuzyciePaliwaNa100km
Metody:
metody dostępowe do pól prywatnych,
dwa konstruktory ( jeden bez parametrów, inicjujący pola domyślnymi wartościami dowolnie przyjętymi oraz drugi z trzema parametrami vMax, paliwoWzbiorniku oraz zuzyciePaliwaNa100km )
double zasieg() - obliczającą ile można przejechać na paliwie w zbiorniku
double czasDojazdu(double dystans) - obliczającą ile zajmie dojazd zakładając średnią prędkość wynoszącą 3/4 vMax
void zatankuj(double ilePaliwaZatankowano) - zwiększającą liczbę paliwa w zbiorniku zgodnie z wartością parametru
void trasa(double liczbaKilometrów) - zmniejszającą liczbę paliwa w zbiorniku zgodnie z liczbą przejechanych kilometrów
Do tej pory napisałem coś takiego:
package obiektyzadanie1;
import java.util.Scanner;
public class ObiektyZadanie1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Podaj maksymalną prędkość samochodu: "); int V = sc.nextInt();
System.out.print("Podaj ile jest paliwa w zbiorniku: "); double paliwo = sc.nextDouble();
System.out.print("Podaj jakie jest zużycie paliwa na 100km: "); double zuzycie = sc.nextDouble();
Samochod auto = new Samochod(); // Tutaj pojawia się problem
}
class Samochod {
private int vMax;
private double paliwoWZbiorniku, zuzycieNa100km;
public Samochod() {
this.vMax = 120; paliwoWZbiorniku = 35.0; zuzycieNa100km = 5.0;
}
public Samochod(int V, double paliwo, double zuzycie) {
this.vMax = V;
this.paliwoWZbiorniku = paliwo;
this.zuzycieNa100km = zuzycie;
}
public double zasieg() {
return (paliwoWZbiorniku / zuzycieNa100km) * 100;
}
public double czasDojazdu(double dystans) {
return ((3 * vMax) / 4) / dystans;
}
void zatankuj(double ilePaliwaZatankowano) {
System.out.println("Zatankowano: " + ilePaliwaZatankowano);
paliwoWZbiorniku += ilePaliwaZatankowano;
}
void trasa(double liczbaKilometrow){
paliwoWZbiorniku = (100*paliwoWZbiorniku)/(zuzycieNa100km*liczbaKilometrow);
System.out.println("Po przejechaniu "+liczbaKilometrow+"km zostanie "+paliwoWZbiorniku+"l paliwa.");
}
/**
* @return the vMax
*/
public int getvMax() {
return vMax;
}
/**
* @return the paliwoWZbiorniku
*/
public double getPaliwoWZbiorniku() {
return paliwoWZbiorniku;
}
/**
* @return the zuzycieNa100km
*/
public double getZuzycieNa100km() {
return zuzycieNa100km;
}
}
}
Napisałem do tej pory coś takiego, ale próbując jakoś sprawdzić działanie tego kodu już w momencie kiedy próbuję stworzyć nowy obiekt wyskakuje mi błąd "non-static variable cannot be referenced from a static context".
Czy mógłby ktoś wytłumaczyć mi jak dokładnie działa to wszystko i co powoduje ten błąd oraz co muszę zrobić, żeby to naprawić?