Na końcu pętli for przyjmuje się pustą instrukcję, odpowiednik pustego bloku dla pętli for. Kompilator odczytuje kod jako:
int i;
....
for(i=0; i<9; i++)
/* no-op */;
/* inline block with no relation to for-loop */
{
System.out.println ("Please enter a number:");
Num[i] = keyboard.nextDouble();
Sum += Num[i];
Product *= Num[i];
}
Zdjąć ;
aby uzyskać zamierzone zachowanie.
Jeśli nie potrzebujemy i
zewnątrz pętli, można przenieść swoją deklarację w oświadczeniu for
.
for(int i=0; i<9; i++)
{
// `i` is only usable here now
}
// `i` is now out of scope and not usable
Używając tej składni, gdy błędne średnik ;
był obecny byłby produkowany błąd kompilacji, który zaalarmował do błędnego wcześniejszym ;
. Kompilator będzie zobaczyć:
for(int i=0; i<9; i++)
/* no-op */;
/* inline block with no relation to for-loop */
{
System.out.println ("Please enter a number:");
Num[i] = keyboard.nextDouble(); // compile error now - `i` is out-of-scope
Sum += Num[i];
Product *= Num[i];
}
Byłby to przykład, dlaczego jest to dobra praktyka, aby ograniczyć zakres zmiennych, jeśli to możliwe.
To nie powinno się nawet kompilować. Symbol "i" nie jest zadeklarowany. O ile nie masz "i" zadeklarowanego globalnie gdzieś na górze. –
W tym sensie nie ma również "Num", "keyboard", "Sum" lub "Produkt". –
Prawdopodobnie powinieneś wybrać odpowiedź na swoje pytanie. – deterb