Czy mógłby ktoś mi wytłumaczyć dlaczego program w drugiej wersji zwraca wyjątek? Miejsce zmienia tylko linijka z kodem: Iterator<Gerbil> it = gerbils.iterator();
import java.util.*;
import java.util.*;
class Gerbil {
private int gerbilNumber;
public Gerbil(int i) {
gerbilNumber = i;
}
public void hop() {
System.out.println("Gerbil " + gerbilNumber + " hops");
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Gerbil> gerbils = new ArrayList<Gerbil>();
for(int i = 0; i < 10; i++)
gerbils.add(new Gerbil(i));
Iterator<Gerbil> it = gerbils.iterator(); // Chodzi o tą linijkę
while (it.hasNext()) {
Gerbil g = it.next();
g.hop();
}
}
}
import java.util.*;
import java.util.*;
class Gerbil {
private int gerbilNumber;
public Gerbil(int i) {
gerbilNumber = i;
}
public void hop() {
System.out.println("Gerbil " + gerbilNumber + " hops");
}
}
public class Test {
public static void main(String[] args) {
ArrayList<Gerbil> gerbils = new ArrayList<Gerbil>();
Iterator<Gerbil> it = gerbils.iterator(); // Chodzi o tą linijkę
for(int i = 0; i < 10; i++)
gerbils.add(new Gerbil(i));
while (it.hasNext()) {
Gerbil g = it.next();
g.hop();
}
}
}
Aby zadziałało w 2 wersji należy wpisać przed
while (it.hasNext()) {
kod:
it = gerbils.iterator();
Tylko dlaczego, przecież inicjowalem zmienna it predzej?