Ćwiczenie z butelką - problem
Napisane: piątek, 14 października 2016, 15:04
Cześć,
mam problem z kodem - stworzyłem pojemnośc dla każdej butelki, wszystko działa prawidłowo przy dolewaniu i wylewaniu. Niestety nie wiem jak sprawić by przy przelewaniu wartości większej niż wynosi aktualna pojemność w butelce do której przelewam nie wykonywało kodu.
W tym momencie przy podaniu większej wartości nie przelewa mi do drugiej butelki (bo jest za mała pojemność), jednocześnie jednak wylewa mi z butelki z której przelewam (a chcę żeby ta wartość została jak początkowa).
Podaję kod:
Jak widać chcę przelać 8 litrów z butelki 2 do butelki 1. W butelce 2 mam wystarczającą ilość płynu do przelania, natomiast w butelce 1 nie mam odpowiedniej pojemności do zmieszczenia. Efekt jest taki, że w butelce 1 zostaje 10 litrów, natomiast odlewa mi 8 litrów z butelki 2.
Dodam tylko że w tym momencie NIE chcę, żeby mój kod dolewał tyle litrów ile jest możliwe a resztę zostawiał. To będzie moim następnym krokiem - na razie chcę robić wszystko po kolei by lepiej zrozumieć
.
Pozdrawiam
mam problem z kodem - stworzyłem pojemnośc dla każdej butelki, wszystko działa prawidłowo przy dolewaniu i wylewaniu. Niestety nie wiem jak sprawić by przy przelewaniu wartości większej niż wynosi aktualna pojemność w butelce do której przelewam nie wykonywało kodu.
W tym momencie przy podaniu większej wartości nie przelewa mi do drugiej butelki (bo jest za mała pojemność), jednocześnie jednak wylewa mi z butelki z której przelewam (a chcę żeby ta wartość została jak początkowa).
Podaję kod:
Code: Zaznacz cały
package butelka;
public class Butelka {
private double ileLitrow;
private double Pojemnosc;
Butelka (double ileLitrow, double Pojemnosc)
{
this.ileLitrow = ileLitrow;
this.Pojemnosc = Pojemnosc - ileLitrow;
}
double getIleLitrow()
{
return ileLitrow;
}
double getPojemnosc()
{
return Pojemnosc;
}
boolean wlej(double ilosc)
{
if (ilosc <= Pojemnosc)
{
this.ileLitrow += ilosc;
this.Pojemnosc = Pojemnosc - ilosc;
}
else
System.out.println("Butelka ma za małą pojemność");
return false;
}
boolean wylej(double ilosc)
{
if (ilosc <= ileLitrow)
{
this.ileLitrow -= ilosc;
this.Pojemnosc = Pojemnosc + ilosc;
}
else
System.out.println("Chcesz wylać więcej niż jest w butelce ?");
return false;
}
void przelej(double ilosc, Butelka gdziePrzelac)
{
if (this.wylej(ilosc))
{
gdziePrzelac.wlej(ilosc);
}
else
System.out.println("Nieprawidłowa wartosc");
}
public static void main(String[] args) {
Butelka[] butelka = new Butelka[3];
butelka[0] = new Butelka(5, 15);
butelka[1] = new Butelka(10, 15);
butelka[2] = new Butelka(15, 15);
butelka[0].wlej(0);
butelka[1].wylej(0);
butelka[2].przelej(8, butelka[1]);
System.out.println("W butelce nr 0 mamy " + butelka[0].ileLitrow + " l");
System.out.println("W butelce nr 1 mamy " + butelka[1].ileLitrow + " l");
System.out.println("W butelce nr 2 mamy " + butelka[2].ileLitrow + " l");
System.out.println("Ile litrów można jeszcze nalać do butelki nr 0: " + butelka[0].Pojemnosc + " l");
System.out.println("Ile litrów można jeszcze nalać do butelki nr 1: " + butelka[1].Pojemnosc + " l");
System.out.println("Ile litrów można jeszcze nalać do butelki nr 2: " + butelka[2].Pojemnosc + " l");
}
}
Dodam tylko że w tym momencie NIE chcę, żeby mój kod dolewał tyle litrów ile jest możliwe a resztę zostawiał. To będzie moim następnym krokiem - na razie chcę robić wszystko po kolei by lepiej zrozumieć

Pozdrawiam