2016-04-30 2 views
-3
for(int i=0;i<=3;i++) 
{ 
    for(int j=1;j<=2*i-1;j++) 
     System.out.println(i); 
} 

Значение i после того, как первый цикл должен быть еще 0, но она увеличивается до 1. Вот где я не понимаю код. Может кто-нибудь объяснить это?forloop приращение не понимая

+0

«Значение i после первого цикла должно быть 0» Почему вы так думаете? – MikeCAT

+0

проверьте состояние во втором цикле. во второй петле нет первой итерации. –

+0

Да, потому что я поставил оператор печати перед j-циклом, тогда я получил значение 0 – ABAJAVa

ответ

0

Первая итерация

for(int i=0;i<=3;i++) i = 0,true, 
{ 
for(int j=1;j<=2*i-1;j++) j=1 , j<=-1 which is false . so it is skipping 
    System.out.println(i); prints nothing 
} 

второй Итерация

for(int i=0;i<=3;i++) i = 1,true, 
{ 
for(int j=1;j<=2*i-1;j++) j=1 , j<=1 which is true. so now it runs loop inside 
    System.out.println(i); so now prints 1 
} 

Если вы являетесь beginnerto петли. Всегда рисуйте trace table dry runs

+0

Да, я получил его сейчас Спасибо. – ABAJAVa

+0

Да, я недавно изучаю программирование, спасибо за ур след метод я буду использовать его – ABAJAVa

+0

где принять. Я новичок в этом блоге. – ABAJAVa

2

Когда i is 0 внутренний цикл (тот, который основан на значении j) не запускается. Условие оценивается до j<=-1, поэтому цикл никогда не вводится, и оператор System.out.println никогда не выполняется. Только во втором цикле, когда i равен 1, второй цикл имеет возможность выполнить.

+0

Хорошо, получилось. Спасибо – ABAJAVa

1

Во внутреннем цикле условие «for (int j = 1; j < = 2 * i-1; j ++)» должно быть удовлетворено, в случае i = 0 этот цикл не будет выполняться в первом итерация, следовательно, она перейдет на вторую итерацию, т.е. i = 1.

+0

Хорошо, понял. Спасибо – ABAJAVa

+0

@ABAJAVa, пожалуйста, поддержите, если вы получили свой ответ. :) – hellboy

Смежные вопросы