Czy inkrementacjja w zagnieżdżonej pętli for zostaje zapamiętana?

0

Witam,
Dopiero zaczynam naukę programowania Javy. W podręczniku znalazłem przykład programu do oblicznia liczb pierwszych.
Nie do końca rozumiem dlaczego działa prawidłwo :).

Pytanie czy jeśli zagnieżdżona pętla 'for' skończyła spełniać warunki i program wraca do pierwszej pętli 'for', to czy wartość d w drugiej, zagnieżdżonej pętli pozostaje zapamiętana czy jest resetowana?

Według mojego rozumowania program nie powinine działać, gdyż dla i = 9, spełnione jest warunek pierwszej pętli, przypisana zostaje wartość isprime=true, spełniony jest warunek 2 pętli (2 <= 9/2) oraz nie jest spełniony warunek 'if' zatem isprime=true. W takim wypadku liczba 9 powinna zostać wyświetlona w ciągu, ale tak się nie dzieje.
Dlaczego?

class PrimeNum {
public static void main(String args[]) {
int i;
int d;
boolean isprime;
System.out.println("Liczby pierwsze: ");
for(i = 2; i < 100; i++) {
isprime = true;
for(d = 2; d <= i/d; d++)
if((i % d) == 0) isprime = false;
if(isprime)
System.out.println(i);
}
}
}

Pozdrawiam

2

Nic nie jest resetowane. Po prostu wykonuje się on nowa. Bloki kodu.
A tak wgl to sformatuj kod.

1

Bloki kodu.

Rozwijając:

  • Gdy otwierasz nowy blok kodu to tworzony jest nowy zakres widoczności zmiennych.
  • Gdy opuszczasz blok kodu to wszystkie zmienne utworzone w tym bloku kodu (zakresie widoczności) są niszczone.
  • Gdy ponownie wchodzisz do bloku wszystkie zmienne są tworzone ponownie

itd. itd.

0

Dzięki!
BTW. Kod był sformatowany po wysłaniu posta formatowanie zniknęło.

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