[java] Definiowanie klasy - metoda z instrukcją if

kafienkov
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 20 mar 2014, o 22:12
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy

[java] Definiowanie klasy - metoda z instrukcją if

Post autor: kafienkov »

Witam,

Mam mały problem z zadaniem a mianowicie mam następującą klasę Main:

Kod: Zaznacz cały

public class Main {
  public static void main(String ... args) {    
    Zbiornik z1 = new Zbiornik(200);
    System.out.println(z1);  
    z1.dolej(40);
    System.out.println(z1);
    z1.odlej(50);
    System.out.println(z1);
    Zbiornik z2 = new Zbiornik(1000);
    z2.dolej(500);
    System.out.println(z2);
  }
}
dla której mam stworzyć klasę Zbiornik - wszystko już działa poza jednym - kiedy zmienię wartości dolewanej wody do zbiornika otrzymuję na konsoli wydruki o pojemności zbiornika poniżej 0 lub też przekraczające wprowadzoną pojemność zbiornika. Poniżej stworzona przeze mnie klasa Zbiornik:

Kod: Zaznacz cały

public class Zbiornik 
{
	  private static int iloscZbiornikow=1;
	  
	  private int numer;
	  private double pojemnosc;
	  private double stan;
	  public double woda;
	  
	  public Zbiornik(double pojemnosc)
	  {
	    numer=iloscZbiornikow++;
	    this.pojemnosc=pojemnosc;
	    woda = 0;
	    stan = 0;
	  }
	    
	  public double dolej(double woda)
	  { 
		 this.woda=woda;
		 if ((stan+= woda) > pojemnosc) return pojemnosc;
		 else return stan;
	  
	  }
	  
	  public double odlej(double woda)
	  {
	    this.woda=woda;
		if ((stan -=woda) <= 0) return 0;
	    else return stan;
	  }
	  	public String toString()
	  {
	  		return "Zbiornik "+numer+", pojemność "+pojemnosc+", stan wody "+stan;
	  }
} 
Jak mogę inaczej zapisać warunek if w obu danych metodach klasy Zbiornik żeby nie zwracały mi wartości większej niż dana pojemność zbiornika w przypadku dolewania i mniejszej niż 0 w przypadku odlewania??
Z góry dzięki za wszelkie wskazówki.
ravgirl
Użytkownik
Użytkownik
Posty: 171
Rejestracja: 29 gru 2013, o 17:41
Płeć: Kobieta
Lokalizacja: Pruszków
Pomógł: 64 razy

[java] Definiowanie klasy - metoda z instrukcją if

Post autor: ravgirl »

Operatory += i -= w warunkach powodują, że od razu zmienia się wartość zmiennej stan. Zmiana wartości tej zmiennej nie powinna się znajdować w samym warunku, a dopiero w bloku, który jest wykonywany, jeżeli warunek jest spełniony. Pseudokod:

Kod: Zaznacz cały

if(stan + woda < pojemnosc) // jeśli suma obecnego stanu i dolewanej wody jest mniejsza od pojemności
{
    stan += woda; // dodaj dolewaną ilość wody do obecnego stanu.
}
else // w przeciwnym przypadku (gdy suma przekracza pojemność)
{
    stan = pojemnosc; // ustaw stan na maksymalną pojemność
}
return stan;
Analogicznie z odlewaniem
kafienkov
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 20 mar 2014, o 22:12
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 2 razy

[java] Definiowanie klasy - metoda z instrukcją if

Post autor: kafienkov »

Ok dzięki śliczne za pomoc mam już całość

Kod: Zaznacz cały

public class Zbiornik 
{
	  private static int iloscZbiornikow=1;
	  
	  private int numer;
	  private double pojemnosc;
	  private double stan;
	  
	  public Zbiornik(double pojemnosc)
	  {
	    numer=iloscZbiornikow++;
	    this.pojemnosc=pojemnosc;
	    stan = 0;
	  }
	    
	  public void dolej(double woda)
	  { 
		  if((stan+= woda)>pojemnosc)
		  stan=pojemnosc;
	  
	  }
	  
	  public void odlej(double woda)
	  {
		  if((stan-= woda)<0)
		  stan=0;
	  }
	  	public String toString()
	  {
	  		return "Zbiornik "+numer+", pojemność "+pojemnosc+", stan wody "+stan;
	  }
} 
ODPOWIEDZ