Gdy uruchomię to klasa dla pętli wydaje się zakończyć wczesnąpętli kończącej wcześnie przy porównywaniu do Integer.MAX_VALUE i używając System.out.println
class Test {
public static void main(String[] args) {
int result = 0;
int end = Integer.MAX_VALUE;
int i;
for (i = 1; i <= end; i += 2) {
System.out.println(i);
}
System.out.println("End:" + i);
}
}
wyjście jest:
1
3
5
...
31173
31175
End:31177
Dlaczego czy to się kończy? Interesujące, jeśli usunęłem System.out.println(i)
w pętli for, wyjściem byłby End:-2147483647
. Oczywiście wartość w i
ma wrapped round
.
wersja Java używam jest
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Spróbuj wydrukować Integer.MAX_VALUE –
Nie otrzymuję takich danych wyjściowych. Wydaje się, że twój bufor jest wypełniony, czy coś. –
Kod nie powinien nigdy drukować Koniec, to również błąd (choć nieco inny), napisana pętla jest nieskończona, zawsze będę <= Integer.MAX_VALUE. – user439407