Dlaczego nie zostaje spełniony warunek w setterze?

0

Cześć :) jestem nowy na forum od dziś, i mam problem :) chodzi o settera :

public void setplec (String p1)
	{
		String p = p1.toUpperCase();
		for (int i = 0;i < rodzajP.length ;i++)
		{
			if (rodzajP[i].compareTo(p1) == 0)
			{
				plec = p;
                                break;

			}
			else
			{
				System.out.println("Podana płeć jest błędna");
				plec = p;
				return;
			}
		}
	}

Jak odpalam program, wszystko idzie ok dochodzi do tego settera i nie wchodzi mi w if'a tylko Od razu przeskakuje do else. Nie wiem o co chodzi, proszę o pomoc :)
Pozdrawiam

dodanie znacznika <code class="java"> - @furious programming

0

Witamy,

Trochę dziwne jest to co stworzyłeś i nie widzę potrzeby użycia w ifie metody compare by porównać oba obiekty (lepiej użyć metody equals). Zapewne nie wchodzi w if, gdyż compareTo nie wyrzuca 0 na wyjściu.

0
  1. Stosuj przyjęte konwencje.
  2. Nie obarczaj akcesorów dodatkową akcją. Nich robią swoją robotę.
0
  1. Stosuj przyjęte konwencje.
  2. Nie obarczaj akcesorów dodatkową akcją. Nich robią swoją robotę.</quote>

Mógłbyś jakoś to rozwinąć? Nie bardzo rozumiem.
Dzięki

1

Setter ma zasadniczo za zadanie ustawiać wartość danego pola w klasie. Pozostałe zadania (u Ciebie sprawdzanie czy płeć jest poprawna) wydziel do innych metod.

0

zrób walidatora. jeżeli nie byłoby to dto to też zastanawia mnie walenie IlegalArgumentException ? (ale to ktoś musiałby powiedzieć czy to jest okey).

a najlepiej pozbądź się tego i skorzystaj z Enuma 😆

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