/ / Цикълът излиза извън зададеното условие - java, for-loop

Процесът "за" надхвърля установеното състояние - java, for-loop

Аз създадох цикъл, за да направя "i"нараства до "i <10". След като приключи, добавих изходно изявление след затваряне на къдрави скоби, за да покажа стойността на стойността, и то доведе до 10, докато мислех, че максималната стойност може да е само 9. Може ли някой да обясни какво причинява "i" да надхвърля максималната стойност от 9?

Много благодаря, Влад

public class Recap3 {
public static void main(String args[]) {
int i;
for(i=0;i<10;i++) {
System.out.println(i); // this statement lists values from 0 to 9
} System.out.println(i); // this statement returns i = 10
}
}

Отговори:

0 за отговор № 1

Променливата се проверява пред тялото на цикъла и тя се увеличава след тялото.

В последните няколко повторения на цикъла (започвайки от i = 9), се случва следното:

  1. Условието i<10 е отметнато. 9 е по-малко от 10, така че веригата продължава.
  2. Тялото на цикъла се изпълнява и стойността 9 се отпечатва на екрана.
  3. Променливата i се увеличава, което му дава стойността 10.
  4. Условието i<10 е отметнато. 10 не е по-малко от 10, така че веригата излиза.
  5. Операторът извън цикъла се изпълнява. Стойността на i е 10, така че 10 се отпечатва на екрана.

0 за отговор № 2

След всяка итерация на цикъла, Java ще изпълни третия член на for контур, i++, След това проверява дали i<10, Ако това доведе до true, тя продължава цикъла for, в противен случай спира.

Това означава, че първо, java задава i равен на 10, след това проверява дали е по-малък от 10, а след това прекъсва.

Изпълнените изрази изглеждат по следния начин:

System.out.println(i); //i=9
i++; //i=10
if(!(i<10)) break;//This breaks out of the loop
System.out.println(i); //i=10

0 за отговор № 3

Това не е бъг. i се увеличава до 10 е очакваното поведение.

След всяка итерация се извършват следните стъпки:

  1. Извършете третото изречение в for loop
  2. След това оценете условния израз във втората част.
  3. Ако условният израз се изчислява на true, изпълнете тялото на цикъла и се върнете към първата стъпка. Ако условният израз оцени като false, продължете изпълнението след цикъла.

Така че за итерацията кога i е равно на 9, i първо се увеличава до 10, след което се сравнява: i<10, От i<10 е невярно, цикълът завършва. На този етап, i е равно на 10.


0 за отговор № 4

Вторият System.out.println е извън цикъла. Цикълът върви само до 9. Можете да използвате командите if else, за да създадете highnumber и след това System.out.println (highnumber) от външната страна на цикъла.