Этот код работает отлично:Бесконечный цикл
public class Main {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
long endTime = startTime + 60000;
long index = 0;
while (true) {
double x = Math.sqrt(index);
long now = System.currentTimeMillis();
if (now > endTime) {
break;
}
index++;
}
System.out.println(index + " loops in one minute.");
}
}
Но тогда, я попытался переписать его в for loop
, и он застревает в бесконечном цикле.
public class Main {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
long endTime = startTime + 60000;
int i = 0;
for (long now = 0; now < endTime; i++) {
Math.sqrt(i);
now = System.currentTimeMillis();
System.out.println("now" + now);
System.out.println("end" + endTime);
}
}
System.out.println(i+"calculations done in one minute");
}
Вы возвращаете значение 'now' внутри вашего цикла. Итак, 'now' всегда будет меньше, чем' endTime'. – Jbird
Как ваш второй метод подходит для компиляции? Это 'System.out' вне любого метода. – Makoto
Это не бесконечный цикл, подождите 1 минуту. –