Как я во второй цикл не i == 1?
Ответ на этот вопрос нет.
Условия для цикла в основном являются булевыми. Ваш вложенный для цикла у вас есть
for(int j=2; j < i ; j++)
Это означает, что для этого для петли для выполнения, J должен быть < я.
Если вы положите точку останова на эту строку и пройдите через нее в своем отладчике, это станет для вас намного более очевидным.
Так что я пытаюсь сказать нет, когда i==1
, для второго цикла цикла невозможно выполнить, потому что j<i
- false
.
Так, начиная с самого начала вашего кода, у вас есть
for(int i=1; i < 100; i++){
boolean isPrime = true;
//check to see if the number is prime
for(int j=2; j < i ; j++){
if(i % j == 0){
isPrime = false;
}
}
// print the number
if(isPrime)
System.out.print(i + " ");
}
Бег с самого начала вы будете иметь i=1
. isPrime
будет установлен равным true
, а затем он проверит, удовлетворяются ли параметры вашего второго цикла.
for(int j=2; j < i ; j++)
j < i
является false
, поэтому для контура не будет выполняться. Код будет пропустить его и перейти на ваш, если заявление if(isPrime)
Следующая итерация у вас будет i=2
, будет проверяться второй для петли, и видя, что j<i
холдинг значения 2 < 2
является false
, цикл будет пропущен снова ,
Третья итерация у вас будет i=3
. Внутренний цикл будет проверяться на j<i
, удерживая значения 2 < 3
, которые на этот раз TRUE
, поэтому цикл, наконец, будет выполнен.
Надеюсь, это имеет смысл. Как я уже упоминал ранее, если вам все еще неясно, запустите его через ваш отладчик, и он должен стать ясным.
Да, в первый раз, но не после этого. – JJJ
Ваш вопрос немного неясен: технически это будет работать, если i == 1 второй цикл не будет введен вообще, потому что j Erik
Я не согласен с Юханой. Второй цикл никогда не будет выполнен с i == 1 –