Nie wyświetla mi wartości z akcesora

0

Mam taki program:

public class Nauczyciel {


public static void main(String[] args) {
	Uczen uczen1 = new Uczen();
	Uczen uczen2 = new Uczen();
	
	uczen1.imie= "Marcin";
	uczen2.imie= "Tomek";
	uczen1.rok= 3;
	uczen2.rok= 2;
	uczen1.nrkursu= 3;
	uczen2.nrkursu= 4;
	uczen1.wypisz();
	uczen2.wypisz();
	uczen1.setocena(5);
	uczen2.setocena(3);
}



} 
 
public class Uczen {
 public String imie;
 public int rok;
private int ocena;
 public int nrkursu;
 
 public void wypisz()
 {
	 System.out.println(imie + " " + rok + " " + nrkursu +" " + getocena());
		
 }
 // Metoda mutatora
 public void setocena(int o) {
	if (ocena >=2 && ocena <=5)	
	 ocena = o;
	}
 // Metoda akcesora
 public int getocena()
 {
	 return ocena;
 }
}

Chciałbym aby ten program wyświetlał dane wrac z oceną, a z jakiegoś powodu nie wyświetla oceny i, żeby wyświetlał jakiś bład jeśli oceny są z poza przedziału od 1 do 5...

Z góry dziękuję za pomoc

1
uczen1.wypisz();
uczen2.wypisz();
uczen1.setocena(5);
uczen2.setocena(3);

Najpierw wypisujesz, potem dopiero ustawiasz ocenę, w takim razie jaką ocenę ma wyświetlić?

  1. To zrób obsługę błędu, jeżeli ocena jest spoza tego przedziału. Możesz w metodzie wypisać wiadomość na strumień wyjścia, możesz rzucić wyjątkiem IllegalArgumentException, sposobów jest mnóstwo. W czym problem?
1

błąd masz w metodzie setocena

public void setocena(int o) {
    if (ocena >=2 && ocena <=5)    
     ocena = o;
    }

sprawdzasz w warunku wartość zmiennej ocena która domyślnie jest równa 0 i owy warunek nigdy się nie spełni

popraw na


public void setocena(int o) {
    if (o>=2 && o<=5)    
     ocena = o;
    }

a druga sprawa kolejność, o której pisze @Shakaz

1 użytkowników online, w tym zalogowanych: 0, gości: 1