• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rusz głową z Java - Magnesiki z kodem str 52

VPS Starter Arubacloud
0 głosów
414 wizyt
pytanie zadane 12 lutego 2022 w Java przez dwagrosze Nowicjusz (120 p.)

Cześć, wczoraj zabrałem się za książkę Rusz Głową z Java. Na stronie 52 jest tam zadanie pt. Magnesiki z kodem. Udało mi się je rozwiązać ale mam pytanie odnośnie kodu. Kiedy zapisuje kod w ten sposób:

class abcd {
	public static void main(String[] args) {
	int x = 3;
	if (x > 2) {
		System.out.print("a");
	}
	while (x > 0) {	 
	System.out.print("-"); 
	x = x - 1;
	if (x == 1) {
			System.out.print("d");
			x = x - 1;}
	if (x == 2) {
			System.out.print("b c");
	
}
}		
}
}

Dostaje wynik a-b c-d, co jest wynikiem przeze mnie oczekiwanym. Nie rozumiem natomiast, dlaczego przy zapisie:

class abcd {
	public static void main(String[] args) {
	int x = 3;
	if (x > 2) {
		System.out.print("a");
	}
	while (x > 0) {	 
	System.out.print("-"); 
	x = x - 1;
	if (x == 2) {
			System.out.print("b c");
	if (x == 1) {
			System.out.print("d");
			x = x - 1;}
}
}		
}
}

Wynik to a-b c--. Wiem, że pytanie jest prozaiczne ale proszę o odpowiedź, bo nie daje mi ono spokoju.

komentarz 12 lutego 2022 przez VBService Ekspert (255,800 p.)
edycja 12 lutego 2022 przez VBService

Inne rozmieszczenie instrukcji warunkowych (jak już wspomniał @Whiskey_Taster), czym to skutkuje, sam już wiesz.  wink

 

BTW. Zwróć uwagę też na to co napisał @Wiciorny chociaż Ciebie to bezpośrednio nie dotyczy wink

tłumaczą że semicolon niepotrzebny, że :D to się samo formatuje ple ple, istotnie moim zdaniem więcej  dbania o takie rzeczy to w przyszłości się zwraca :)

1 odpowiedź

+3 głosów
odpowiedź 12 lutego 2022 przez Whiskey_Taster Pasjonat (15,610 p.)
Dlatego w programowaniu ważne jest, by trzymać porządek w kodzie. Robić wcięcia, trzymać porządek z klamrami, bo potem idzie się pogubić.

Zwróć uwagę, że w pierwszym przypadku druga instrukcja warunkowa jest poza pierwszą, bo instrukcja if(x == 2) zamyka się przed instrukcją if(x == 1). Z kolei w drugim wypadku tak nie jest - instrukcja if(x == 1) jest w środku instrukcji if(x == 2) [patrz, jak klamry się zamykają]. Wobec tego instrukcja ma szansę się wykonać tylko wtedy, gdy x == 2, ale x nie jest tam nigdzie modyfikowany, wobec tego instrukcja pod warunkiem x == 1 nie wykona się w tym przypadku nigdy.
1
komentarz 12 lutego 2022 przez Wiciorny Ekspert (277,420 p.)
edycja 12 lutego 2022 przez Wiciorny
a js-owcy dalej :D tłumaczą że semicolon niepotrzebny, że :D to sie samo formatuje ple ple, istotnie moim zdaniem wiecej  dbania o takie rzeczy to w przyszlosci sie zwraca :)
1
komentarz 12 lutego 2022 przez VBService Ekspert (255,800 p.)

semicolumn => semicolon  wink

 

że :D to sie samo formatuje ple ple, istotnie moim zdaniem wiecej  dbania o takie rzeczy to w przyszlosci sie zwraca :)  yes yes

1
komentarz 12 lutego 2022 przez Wiciorny Ekspert (277,420 p.)
poprawiłem :D dzięki

Podobne pytania

0 głosów
1 odpowiedź 1,196 wizyt
pytanie zadane 23 lipca 2016 w Java przez Janek19 Początkujący (290 p.)
0 głosów
1 odpowiedź 709 wizyt
pytanie zadane 19 marca 2019 w C# przez Shimeo7 Obywatel (1,910 p.)
0 głosów
1 odpowiedź 199 wizyt

92,970 zapytań

141,934 odpowiedzi

321,168 komentarzy

62,299 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...