Mam parę problemów z pewnym zadaniem. Może najpierw powiem o jakie zadanie chodzi:
Stworzyć klasę Sklep, reprezentującą jeden sklep w taki sposób, aby następujący program:
public class Test {
public static void main(String[] args) {
Sklep.setCenaHurtowa(1.5);
Sklep.setCenaDetaliczna(3);
Sklep sklep1 = new Sklep();
Sklep sklep2 = new Sklep();
Sklep sklep3 = new Sklep();
sklep1.kupno(100);
sklep2.kupno(200);
sklep3.kupno(300);
System.out.println("Sklepy: \n" + sklep1 + '\n' + sklep2 + '\n' + sklep3 + '\n');
sklep1.sprzedaż(95);
sklep2.sprzedaż(100);
sklep3.sprzedaż(250);
podajZyski(sklep1); // uwaga: to jest wywołanie metody z klasy Test,
podajZyski(sklep2); // którą to metodę też trzeba napisać
podajZyski(sklep3);
}
}
wyprowadził na konsolę podane wyniki:
Sklepy:
Sklep nr 1 aktualny stan jabłek 100.0 kg
Sklep nr 2 aktualny stan jabłek 200.0 kg
Sklep nr 3 aktualny stan jabłek 300.0 kg
Sklep nr 1 aktualny stan jabłek 5.0 kg
Wydatki: 150.0
Dochody: 285.0
Zysk : 135.0
Sklep nr 2 aktualny stan jabłek 100.0 kg
Wydatki: 300.0
Dochody: 300.0
Zysk : 0.0
Sklep nr 3 aktualny stan jabłek 50.0 kg
Wydatki: 450.0
Dochody: 750.0
Zysk : 300.0
Uwaga: wszystkie pola klasy Sklep muszą być prywatne.
Oto mój kod:
class Sklep {
private static double CenaHurtowa, CenaDetaliczna;
private static int ileKupiono, ileSprzedano;
private double wydatki, dochody, zostalo;
private static int numer=0;
private int nr;
public Sklep(){
numer++;
nr=numer;
}
public static void setCenaHurtowa(double x) {
CenaHurtowa = x;
}
public static void setCenaDetaliczna(double y) {
CenaDetaliczna = y;
}
public static void kupno(int x){
int ileKupiono = x;
}
public static void sprzedaz(int y){
int ileSprzedano = y;
}
public double obliczWydatki(){
wydatki = CenaHurtowa * ileKupiono;
return wydatki;
}
public double obliczDochody(){
dochody = CenaDetaliczna * ileSprzedano;
return dochody;
}
public double ileZostalo(){
zostalo = ileKupiono - ileSprzedano;
return zostalo;
}
public String toString() {
return "Sklep nr " + nr + " aktualny stan jablek " + ileKupiono + " kg";
}
public String wynik() {
String wynik = "Sklep nr " + nr + " aktualny stan jablek " + zostalo + "kg\nWydatki:" + wydatki + "\nDochody:" + dochody + "\nZyski:";
return wynik;
}
}
public class Test {
public static void main(String[] args) {
Sklep.setCenaHurtowa(1.5);
Sklep.setCenaDetaliczna(3);
Sklep sklep1 = new Sklep();
Sklep sklep2 = new Sklep();
Sklep sklep3 = new Sklep();
sklep1.kupno(100);
sklep2.kupno(200);
sklep3.kupno(300);
System.out.println("Sklepy: \n" + sklep1 + '\n' + sklep2 + '\n' + sklep3 + '\n');
sklep1.sprzedaz(95);
sklep2.sprzedaz(100);
sklep3.sprzedaz(250);
public double podajZyski(){
zyski = (Sklep.kupno()*Sklep.setCenaHurtowa()) - (Sklep.sprzedaz()*Sklep.setCenaDetaliczna());
return zyski;
}
podajZyski(sklep1);
podajZyski(sklep2);
podajZyski(sklep3);
System.out.println("Sklepy: \n" + sklep1.wynik() + podajZyski(sklep1) + '\n' + sklep2.wynik() + podajZyski(sklep2) + '\n' + sklep3.wynik() + podajZyski(sklep3) + '\n');
}
}
Problemy jakie mi się pojawiły:
- O ile udało mi się poprawić numery sklepów, które już wyliczone są poprawnie to nie wiem czemu konsola pokazuje aktualny stan 0kg w każdym przypadku... może to banalny błąd, ale nie wiem co jest źle
- Program działa tylko gdy:
public double podajZyski(){
zyski = (Sklep.kupno()*Sklep.setCenaHurtowa()) - (Sklep.sprzedaz()*Sklep.setCenaDetaliczna());
return zyski;
}
podajZyski(sklep1);
podajZyski(sklep2);
podajZyski(sklep3);
System.out.println("Sklepy: \n" + sklep1.wynik() + podajZyski(sklep1) + '\n' + sklep2.wynik() + podajZyski(sklep2) + '\n' + sklep3.wynik() + podajZyski(sklep3) + '\n');
dam jako komentarz, inaczej nie chce skompilować. Normalnie dałabym tą metodę w klasie sklep ale w poleceniu jest, że musi być w klasie Test i tu pojawia się problem bo chyba robię to źle.
Z góry przepraszam jeśli mój problem jest banalny, ale naprawdę potrzebuję pomocy, by swoje głupie błędy zauważyć i potem ich już nie popełniać.
dodanie znaczników <quote>, <code> i <code class="java"> - Furious Programming