Pętla While z dzieleniem liczb.

Pętla While z dzieleniem liczb.
PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Śląsk
  • Postów: 17
0

Dzień dobry,

potrzebuje zrobić pętle która tak długo będzie dzielić podaną wartość parzystą, aż wynik będzie równy 2
czyli np mamy liczbę 32 i pętla poleci 4 razy:
32/2 =16
16/2=8
8/2=4
4/2=2

chciałem to zrobić tak:

Kopiuj
 int wartosc = 32;
while (wartosc >= 2) {
                System.out.println("tekst");
                wartosc / 2;

jednak wyskakuje mi błąd i Intellij wskazuje że jest on w znaku / przy "wartosc / 2"
próbowałem to jakoś przekładać, ale poległem...

może ktoś ma jakieś wskazówki?

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

brakuje Ci przypisania

Kopiuj
int wartosc = 32;
while (wartosc >= 2) {
                System.out.println("tekst");
                wartosc  = wartosc / 2;
}
PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Śląsk
  • Postów: 17
0

dzięki fasadin, program faktycznie "ożył"!
a możesz mi wytłumaczyć dlaczego w przypadku dzielenie ten zapis musi tak wyglądać, a w przypadku inkrementacji jest tylko wartość++;

SI
  • Rejestracja: dni
  • Ostatnio: dni
0

Możesz spróbować przez wartosc /= 2, ale nie wiem czy w Javie coś takiego przejdzie. Generalnie chodzi o to że wykonujesz działanie, ale nigdzie nie przypisujesz jego wyniku. Zaś wartość++ to taki "skrót programistyczny" używany np w wspomnianych while-ach O ile wiem działa tylko ++ oraz --.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
3

Zapis nie musi tak wyglądać, można

Kopiuj
wartosc = wartosc + 1;
wartosc = wartosc / 2;

można (oszczędzając palec) użyć krótkiej formy

Kopiuj
wartosc++;
wartosc/=2; 
1milion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

Czyli przekładając to na język ludzki "przypisanie" musi być zawsze. Inkrementacja++ to nic innego jak:
Inkrementacja = Inkrementacja + 1

C ze swoimi skrótami myślowymi szybko stało się bardziej lubianym językiem od Pascala ze względu na zwięzłość kodu a co za tym idzie szybkość. Swego czasu Watcom C wymiatał we wszystkich measurementach, ale nie miał IDE.

PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Śląsk
  • Postów: 17
0

a czy jest opcja aby odwrócić kolejność wyników takiej pętli?
bo z tego mamy np. 16 , 8 , 4 , 2
a jak zamienić by było: 2 , 4 , 8 , 16
Próbowałem to jakoś na z ciągiem znaków i reversalem zrobić no, ale dla int się nie da, może jakaś wskazówka?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
int wartosc = 2;
while (wartosc <= 16) {
                System.out.println("tekst");
                wartosc*=2; 
}

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.