Program symulujący butelki i przelewanie wody – poprawienie instrukcji warunkowych

Program symulujący butelki i przelewanie wody – poprawienie instrukcji warunkowych
K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Witam,
chcę napisać program którego zadaniem będzie " tworzenie butelki o danej pojemności, wlewanie oraz wylewanie do niej wody, oraz przelewanie wody z jednej do drugiej butelki"
i tu jest mój problem, ponieważ gdy chcę przelać np 100litrów wody z butelki nr 1 do butelki nr 2 podczas gdy w butelce nr 1 jest np 50 litrów , to ta operacja się wykona.
Tu moja prośba, napisałem warunek ze jezeli butelka ma 50litrow to da się z niej wylać tylko 50litrow, ale nie wiem jak zrobić aby wlalo mi te 50 litrow podczas gdy wpisalem 100
oto mój kod :

plik Butelka.java

Kopiuj

package com.company;

import com.sun.istack.internal.localization.NullLocalizable;

public class Butelka {
    private double ileLitrow;


    public Butelka() {

    }

    public Butelka(double ileLitrow) {
        this.ileLitrow = ileLitrow;
    }

    double getIleLitrow() {
        return ileLitrow;
    }

    void wlej(double ilosc) {
        this.ileLitrow = this.ileLitrow + ilosc;

    }

    void wylej(double ilosc) {

        if (this.ileLitrow > ilosc) {
            this.ileLitrow = this.ileLitrow - ilosc;
            System.out.println("Wylano " + ilosc + "litrow");


        } else if (this.ileLitrow < ilosc) {
            System.out.println("Butelka posiadała " + ileLitrow + " litrow wody ktore zostaly wylane");
            ilosc = this.ileLitrow;
            System.out.println(ilosc);
            this.ileLitrow = 0;
        }

    }


    void przelej(double ilosc, Butelka gdziePrzelac) {   //metoda odpowiadająca za przelewanie
        this.wylej(ilosc);
        gdziePrzelac.wlej(ilosc);

    }

}

plik main.java

Kopiuj

package com.company;

public class Main {

    public static void main(String[] args) {
        Butelka[] butelka = new Butelka[3];

        for (int i = 0; i < butelka.length; i++) {
            butelka[i] = new Butelka(20 * i+1);
        }

        System.out.println(butelka[2].getIleLitrow());
        System.out.println(butelka[1].getIleLitrow());
        butelka[2].przelej(100,butelka[1]);
        System.out.println(butelka[2].getIleLitrow());
        System.out.println(butelka[1].getIleLitrow());



    }
}


Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
3

gdy chcę przelać np 100litrów wody z butelki nr 1 do butelki nr 2 podczas gdy w butelce nr 1 jest np 50 litrów , to ta operacja się wykona.

No tak, bo nigdzie nie ograniczasz ilości wody w butelkach :-)

Twoje ileLitrow oznacza ile litrów znajduje się w butelce w tej chwili, lecz nigdzie nie zapisujesz niczego w stylu maxLitrow.

Innymi słowy - Twoja klasa powinna składać się z dwóch pól: iloscLitrow oraz maxIloscLitrow.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.