Аз създадох цикъл, за да направя "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
), се случва следното:
- Условието
i<10
е отметнато. 9 е по-малко от 10, така че веригата продължава. - Тялото на цикъла се изпълнява и стойността 9 се отпечатва на екрана.
- Променливата
i
се увеличава, което му дава стойността 10. - Условието
i<10
е отметнато. 10 не е по-малко от 10, така че веригата излиза. - Операторът извън цикъла се изпълнява. Стойността на
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 е очакваното поведение.
След всяка итерация се извършват следните стъпки:
- Извършете третото изречение в for loop
- След това оценете условния израз във втората част.
- Ако условният израз се изчислява на 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) от външната страна на цикъла.