Pętla While z dzieleniem liczb.

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:

 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?

1

brakuje Ci przypisania

int wartosc = 32;
while (wartosc >= 2) {
                System.out.println("tekst");
                wartosc  = wartosc / 2;
}
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ść++;

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 --.

3

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

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

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

wartosc++;
wartosc/=2; 
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.

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?

0
int wartosc = 2;
while (wartosc <= 16) {
                System.out.println("tekst");
                wartosc*=2; 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1