• 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
67 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 (27,300 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 (27,300 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ź 55 wizyt
0 głosów
0 odpowiedzi 50 wizyt
pytanie zadane 9 maja w Java przez acero_m Początkujący (390 p.)
0 głosów
2 odpowiedzi 72 wizyt
pytanie zadane 14 marca w Java przez mibdbz Obywatel (1,330 p.)
Oferty pracy dla początkujących programistów na portalu No Fluff Jobs
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

49,734 zapytań

91,688 odpowiedzi

185,189 komentarzy

24,196 pasjonatów

Przeglądających: 277
Pasjonatów: 12 Gości: 265

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.

...