• 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 (28,260 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,260 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 52 wizyt
pytanie zadane 9 maja w Java przez acero_m Początkujący (390 p.)
0 głosów
2 odpowiedzi 89 wizyt
pytanie zadane 14 marca w Java przez mibdbz Obywatel (1,330 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

50,938 zapytań

93,214 odpowiedzi

189,204 komentarzy

24,822 pasjonatów

Przeglądających: 160
Pasjonatów: 5 Gości: 155

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.

...