[Java] Klasa reprezentująca zbiornik wody

millamber
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 8 kwie 2012, o 19:21
Płeć: Mężczyzna
Lokalizacja: Gdańsk

[Java] Klasa reprezentująca zbiornik wody

Post autor: millamber »

Witam ! Jestem początkująca w Javie , chcę napisać taki program:

Zdefiniować klasę Zbiornik, której obiekty będą stanowić zbiorniki wody. Każdy zbiornik ma numer, zadaną pojemność oraz aktualny stan wody (który może być mniejszy od pojemności, gdy zbiornik nie jest pełen). Inicjalnie stan wody w zbiorniku równy jest \(\displaystyle{ 0}\).
W klasie zdefiniować metody dolej(double woda) i odlej(double woda) pozwalające zmieniać stan wody poprzez dolewanie i odlewanie.
Numery są nadawane zbiornikom automatycznie - pierwszy utworzony w programie zbiornik uzyskuje numer \(\displaystyle{ 1}\), drugi - numer \(\displaystyle{ 2}\) itd.

Zapewnić, aby następujący fragment programu (umieszczony w metodzie main()):

Kod: Zaznacz cały

Zbiornik z1 = new Zbiornik(200);
System.out.println(z1);  
z1.dolej(100);
System.out.println(z1);
z1.odlej(50);
System.out.println(z1);
Zbiornik z2 = new Zbiornik(1000);
z2.dolej(500);
System.out.println(z2);
wyprowadził na konsolę następującą informację:

Kod: Zaznacz cały

Zbiornik 1, pojemność 200.0, stan wody 0.0
Zbiornik 1, pojemność 200.0, stan wody 100.0
Zbiornik 1, pojemność 200.0, stan wody 50.0
Zbiornik 2, pojemność 1000.0, stan wody 500.0
Proszę uważać, aby stan wody w zbiorniku nie miał ujemnych wartości, ani nie przekraczał zadanej pojemności.
W tym kontekście potrzebna będzie instrukcja if, która ma postać:

if (warunek) instrukcja_do_wykonania.

Np.

Kod: Zaznacz cały

int a = 1;
int b = 2;

if (b > a)  b--;
System.out.println(b); // wyprowadzi wartość 1
napisałem wstępnie tak :

Kod: Zaznacz cały

class Main{
	

	public static void main(String[] args) {
				
		Zbiornik z1 = new Zbiornik(200,0);
		System.out.println(z1);  
		z1.dolej(100);
		System.out.println(z1);
		z1.odlej(50);
		System.out.println(z1);
		Zbiornik z2 = new Zbiornik(1000,0);
		z2.dolej(500);
		System.out.println(z2);
		
	}
}
class Zbiornik { 

  private double pojemnosc=0;
  private double stanWody=0;
  private static int liczba=0;
  private int number=0;

  public Zbiornik() {
  	number=++liczba;
  }

  public Zbiornik(double y, double x) {
    pojemnosc = y;  
    stanWody = x;
    number=++liczba;
  }
 
  public Zbiornik(double x) {
    this(x,x);
  } 
  
  public Zbiornik(Zbiornik p) {
    pojemnosc=p.pojemnosc;
    stanWody=p.stanWody;
    number=++liczba;
  } 

  public void dolej(double woda) {
  	stanWody+=woda;
  	if (stanWody>pojemnosc) {stanWody=pojemnosc;}
  	
  }
  public void odlej(double woda) {
  	stanWody-=woda;
  	if (stanWody<0) {stanWody=0;}
  }
                              
  public String toString()  {                 
    return "Zbiornik nr "+number+", pojemnosc "+pojemnosc+", stan wody "+stanWody;
  }
  public void show() {
		System.out.println(toString());
  }
 
}
potrzeba usunac druga dana z nawiasu ale nie wiem jak to osiagnac aby wciaz otrzymywac potrzebne dane na konsoli

Kod: Zaznacz cały

Zbiornik z1 = new Zbiornik(200,0)
Zbiornik z2 = new Zbiornik(1000,0)
Proszę o pomoc
Ostatnio zmieniony 9 kwie 2012, o 08:57 przez Afish, łącznie zmieniany 2 razy.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania. Stosuj tagi.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Java] Klasa reprezentująca zbiornik wody

Post autor: Afish »

Inicjalnie stan wody w zbiorniku równy jest \(\displaystyle{ 0}\).
Awatar użytkownika
jcubic
Użytkownik
Użytkownik
Posty: 43
Rejestracja: 20 gru 2011, o 12:36
Płeć: Mężczyzna
Lokalizacja: Świętokrzyskie
Podziękował: 11 razy

[Java] Klasa reprezentująca zbiornik wody

Post autor: jcubic »

musisz zmienić konstruktor jedno argumentowy:

Kod: Zaznacz cały

  public Zbiornik(double x) {
    this(x,0);
  }
i wywołasz go z jednym argumentem Zbiornik z1 = new Zbiornik(200); w przeciwnym wypadku będziesz miał poziom wody równy jego pojemności.
ODPOWIEDZ