Potęgi i pętla - prośba o wyjaśnienie

Potęgi i pętla - prośba o wyjaśnienie
RoughBoy
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Płock
  • Postów: 34
0

Robię różne ćwiczenia z netu, z większością nie mam problemu, ale przy tym ćwiczeniu popełniam gdzieś błąd i zupełnie nie wiem gdzie...
Wprowadzam liczbę całkowitą dodatnią n, a program na na ekranie wyświetlić wszystkie potęgi liczby 2 nie większe niż n.

Zadanie niby proste, ale mój kod wyświetla o jedną liczbę za dużo. To znaczy, jak podaje autor ćwiczenia dla np. liczby n = 71, powinienem otrzymać następujący rezultat:
1
2
4
8
16
32
64

Niestety mój kod wyświetla jeszcze 128. Będę wdzięczny za wyjaśnienie, gdzie robię błąd:

Kopiuj
import java.util.*;

public class Potega 
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		int n =0;
		while ( n <= 0 )
		{
			System.out.print("Podaj liczbę całkowitą dodatnią: ");
			n = in.nextInt();
		}
		int potega = 0;
		double wynik = 0;
		while (wynik <= n)
		{
			wynik = Math.pow(2, potega);
			potega ++;
			System.out.println(wynik);
		}
	}
}
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

https://ideone.com/JtIPn5
Print przeniesione 2 linijki wyżej i już działa, no magia jakaś:)

DI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 103
1

while najpierw sprawdza warunek (wtedy wynik = 64), a potem wykonuje ciało pętli.

RoughBoy
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Płock
  • Postów: 34
0

Faktycznie :)

Głupi błąd. Dzięki za pomoc!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.