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

Wątpliwości co do jakości kodu [java]

Object Storage Arubacloud
0 głosów
439 wizyt
pytanie zadane 15 lipca 2016 w Java przez michalxi1410 Początkujący (480 p.)

Witam zaczynam dopiero się uczyć javy, więc postanowiłem poszukać sobie jakichś zadań do zrobienie. Zatrzymałem się na zadaniu 5 - http://www.jkozak.pl/przedmioty/java/zadania1.pdf ponieważ mam wątpliwości co do jakości mojego kodu... Czy można by było np ustalić jakiś stały zbiór wartości dla danej zmiennej i dać to do pętli żeby się wykonywała dotąd, aż użytkownik poda poprawne dane?

import java.util.Scanner;

class Sklep {

	public void raty(int cena, int raty){
		
		if(cena <= 100000 && cena >= 10000 && raty >= 6 && raty <= 48){	
			
			double cenaKoncowa;
			
			if(raty >= 6 && raty <=12){		
				cenaKoncowa = cena + cena * 0.025; 
			}else if(raty > 12 && raty <=24){
				cenaKoncowa = cena + cena * 0.05;			
			}else{
				cenaKoncowa = cena + cena * 0.1;
			}
			
			System.out.println("Rata: " + cenaKoncowa/raty + " Odsetki: " + (cenaKoncowa - cena));	
			
		}else{
			
			Scanner in = new Scanner(System.in);
				while(!(cena < 100000 && cena > 10000 && raty >= 6 && raty <= 48)){
					System.out.println("Podaj cene z odpowiedniego zakresu: ");
					cena = in.nextInt();
					System.out.println("Podaj liczbe rat: ");
					raty = in.nextInt();
				}	
			in.close();
		}	
	}	
}

 

1 odpowiedź

0 głosów
odpowiedź 15 lipca 2016 przez Mr. Szanowny Bywalec (2,180 p.)
edycja 15 lipca 2016 przez Mr. Szanowny

Jak rozumiem chodzi Ci o to, że jak ktoś poda dobrą cenę a zły zakres rat to i tak od nowa musi wpisać cenę? Jeśli tak to może po prostu pętla dla każdej osobnej zmiennej, dopóki nie wpisze prawidłowej, będzie się wykonywać. Ja sprawdzanie czy jest czasem błędne dał przed prawidłowymi obliczeniami. Czyli najpierw dwa if co sprawdzają każdą zmienną czy jest zła - jeśli tak to pętla. A potem prawidłowe obliczenia.

while(cena<100 || cena>10000) {...}
while(raty<6 || raty>48) {...}

prawidłowe obliczenia..

 

komentarz 15 lipca 2016 przez michalxi1410 Początkujący (480 p.)
Dzięki za poradę o to mi chodziło, ale chciałem też zapytać czy da się określić jakoś zakres zmiennej, żeby nie musieć pisać tych długich warunków.
komentarz 15 lipca 2016 przez Mr. Szanowny Bywalec (2,180 p.)
Nie spotkałem się z czymś takim. Właśnie po to są if'y, żeby samemu decydować co się dzieje. Gdyby były takie ograniczone int'y czy float'y to powodowałoby by raczej więcej błędów niż pożytku. Ustaliłbyś zakres od 1 do 10 i ktoś przypisałby 12 to by wtedy  error wyskoczył - wtedy trzeba by było dać try i catch.

Edit. co do mojego głównego komentarza, zamiast if daj tam while.
komentarz 15 lipca 2016 przez event15 Szeryf (93,790 p.)
Zawsze długie warunki można przenieść do metody, która nazywa się na przykład isValid czy coś. wtedy bedzie po prostu if(cena.isValid) jeśli tylko Cenę rozbijesz na Encję i Value Object

W końcu pieniądz to Waluta + Wartość -> 100PLN
komentarz 15 lipca 2016 przez michalxi1410 Początkujący (480 p.)
Wielki dzieki wam, szczególnie tobie event15 za tą metodę, że też na to nie wpadłem :D
komentarz 15 lipca 2016 przez event15 Szeryf (93,790 p.)
Polecam: Kent Beck - TDD. W helionie kupisz za niedrogo :)

Podobne pytania

+2 głosów
2 odpowiedzi 372 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez Gutekv0 Nowicjusz (170 p.)
+2 głosów
1 odpowiedź 158 wizyt
pytanie zadane 12 stycznia 2019 w C# przez KazikBozia Obywatel (1,600 p.)
0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 19 lutego 2018 w Java przez MikeMG Początkujący (330 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...