Ćwiczenie z butelką - problem

Dyskusje na temat Javy.
mirkuz87
Nowicjusz
Posty: 2
Dołączył(a): piątek, 14 października 2016, 13:22

Ćwiczenie z butelką - problem

Post przez mirkuz87 »

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:

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");
       
    }
    
}
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
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Ćwiczenie z butelką - problem

Post przez Morfidon »

Hej,

Odejmij maksymalną ilość, którą pomieści butelka od tego co już jest w tej butelce.

Wynik z tego odejmowania to wartość ile litrów możesz jeszcze dolać.

Jeżeli ta ilość jest większa niżeli ilość wlewana to możesz dolać, a jak mniejsza to nie możesz :)

Pozdrawiam
mirkuz87
Nowicjusz
Posty: 2
Dołączył(a): piątek, 14 października 2016, 13:22

Re: Ćwiczenie z butelką - problem

Post przez mirkuz87 »

Cześć,

dzięki wielkie za podpowiedź, jak będę miał z tym problemy to dam znać :)

Pzdr
Post Reply