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

Poprawnosc wykonanego programu

0 głosów
71 wizyt
pytanie zadane 6 grudnia 2017 w Java przez Ohnne Nowicjusz (180 p.)

Witam. Znalazłem w internecie zadanie o treści jak na obrazku. Poniżej zamieściłem także mój kod źródłowy. Wszystko działa jak powinno lecz jestem początkującym w tej dziedzinie i chciałbym się dowiedzieć czy "stylistycznie" wykonałem je prawidłowo. Z góry dziękuje za odpowiedz i pozdrawiam.

public class Oclahoma {
	
	double power;
	
	public int pow(int c)
	{
		return (int) (power = Math.pow(2, c));
	} 

	public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		System.out.print("Range: ");
		int a = s.nextInt();
		
		Oclahoma oclahoma = new Oclahoma();
		
		for(int i=1; i<a; i++)
		{
			int ex = oclahoma.pow(i);
			
			if(ex<a)
			{
				System.out.println(ex);
			}
			else
			{
				System.out.println("Out of range!");
				break;
			}
		}
		
	}
}

 

1 odpowiedź

0 głosów
odpowiedź 7 grudnia 2017 przez adas94 Nałogowiec (28,780 p.)
Zamiast tworzyć obiekt Oclahoma (bardzo dużo mówiący) zmień metodę pow na metodę statyczną. (public static int pow()...). Dzięki temu będziesz mógł używać tej metody bez tworzenia obiektu.

Druga rzecz, to ten if-else w forze. W zadaniu masz wypisać tylko te liczby które pasują, więc niepotrzebny jest ten else z breakiem, zostaw samego ifa, a kiedy warunek przestanie się zgadzać pętla sama się zakończy (wymaga to zmiany warunku również w for - albo zmianę na pętlę while - bardziej intuicyjną w tym przypadku)
komentarz 7 grudnia 2017 przez Ohnne Nowicjusz (180 p.)
public class Oclahoma {
	
	static double power;
	
	public static int pow(int c)
	{
		return (int) (power = Math.pow(2, c));
	} 

	public static void main(String[] args) {
		
		Scanner s = new Scanner(System.in);
		System.out.print("Range: ");
		int a = s.nextInt();
		int i = 0;
		while(i<a)
		{
			i++;
			int ex = Oclahoma.pow(i);
			if(ex<a)
			{
				System.out.println(ex);
			}
		}
		
	}
}

czy dobrze zrozumialem ?

komentarz 7 grudnia 2017 przez adas94 Nałogowiec (28,780 p.)
Zamiast Oclahoma.pow() możesz napisać pow(), ponieważ używasz tej metody na "terenie" tej samej klasy.
komentarz 7 grudnia 2017 przez Ohnne Nowicjusz (180 p.)
Dzieki wielkie :) Kolejna cenna informacja.

Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 59 wizyt
0 głosów
0 odpowiedzi 57 wizyt
pytanie zadane 9 maja w Java przez acero_m Początkujący (390 p.)
0 głosów
2 odpowiedzi 140 wizyt
pytanie zadane 14 marca w Java przez mibdbz Obywatel (1,330 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

54,420 zapytań

98,307 odpowiedzi

202,201 komentarzy

26,727 pasjonatów

Przeglądających: 280
Pasjonatów: 12 Gości: 268

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...