2015-09-06 3 views
1

Выполнял некоторые практики Java, и один конкретный шаблон цикла смутил меня. я работал к цели, чтобы напечатать этот шаблон,Java For Loop Patterns

123456 
12345 
1234 
123 
12 
1 

И решение было дано

for(int k = 8; k > 1; k--) { 
     for(int l = 1; l < k - 1; l++){ 
      System.out.print(l); 
     } 
     System.out.println(); 
    } 

Я играл со значениями, но я не понимал значение к = 8. Wouldn 't означает, что цикл выполняется 7 раз, когда k> 1 истинно?

редактировать Я играл с кодом и обнаружил меньший, более упрощенный код, который сделал больше смысла для меня,

for(int k = 6; k >= 0; k--) { 
     for(int l = 1; l < k; l++){ 
      System.out.print(l); 
     } 
     System.out.println(); 
    } 

Он тоже дал мне тот же результат. Является ли этот способ логики более запутанным для людей или его легче понять?

+0

Абсолютно. Да, он работает 7 раз. –

+0

Подумайте о принятии моего ответа. И я объяснил, почему ваш код работает 7 раз. Логика в вашем редактировании - моя, которая имеет для вас больше смысла. Вы все еще чувствуете потребность в других мнениях по моей логике, пока вы это понимаете без всяких сомнений. –

ответ

1

Да. Loop Для k будет работать 7 раз. Но в последний раз, когда k = 2, тогда внутренняя петля для l = 1 и l < k - 1 означает 1 < 1 не будет выполняться.

2

Я играл со значениями, но я не понимал значение к = 8. не то, что будет означать, что цикл выполняется 7 раз, когда к> 1 верно?

I означает, что цикл будет выполняться до тех пор, как k > 1 верно, но k также уменьшается на 1, поэтому петли работает 7 раз, но в последнем счете он будет печатать только символ новой строки только (который вам не включили в ваш выход, но он был там, поверьте мне).

1

Я играл со значениями, но я не понял значения k = 8. Не означает ли это, что цикл выполняется 7 раз, когда k> 1 истинно?
для (int k = 8; k> 1; k--) { для (int l = 1; l < k - 1; l ++) { System.out.print (l); } System.out.println(); }

Привет, Здесь, как вы можете видеть, что внешний цикл будет выполняться до значения к = 2, первое значение к 8, так что он будет работать для значений - 8,7, 6,5,4,3,2. Однако целочисленные значения печатаются во внутреннем цикле, где значение l идет от 1 до менее k-1, поэтому на первой итерации оно идет от 1 до 6. Внешний цикл будет работать 7 раз, но значение l печатается только 6 раз, так как l всегда один меньше k.

0

При запуске вашего редактирования кода, вы получите (<nl> представляют новую строку):

12345<nl> 
1234<nl> 
123<nl> 
12<nl> 
1<nl> 
<nl> 
<nl> 

Как вы можете видеть, что ваша правка работает в 7 раз тоже с k значениями 6,5,4,3,2,1,0, и вы не Получите номер 6 в конце первой строки.

Изменения в k > 0 и l <= k:

for(int k = 6; k > 0; k--) { 
    for(int l = 1; l <= k; l++){ 
     System.out.print(l); 
    } 
    System.out.println(); 
} 

Выход

123456<nl> 
12345<nl> 
1234<nl> 
123<nl> 
12<nl> 
1<nl> 
+0

Можете ли вы проверить мой ответ на это, потому что вы ответили более или менее точно, что я написал. –

+0

@ Mr.Robot Вы правы, код, который я написал, точно так же, как и ваш. Очевидно, OP не полностью прочитал ваш ответ и отредактировал вопрос с аналогичной конструкцией, но не понял это правильно. Мой ответ - ответ на отредактированный вопрос, где я прямо указываю, что части OP ошибаются. --- Извините, что он, кажется, заменяет ваш ответ, это было не намерение, и я не понимаю, почему у вас все еще есть downvotes, если только нисходящие пользователи не получили уведомление об обновленном ответе. – Andreas

+0

Нет, я не собирался ничего на тебя навязывать. Я пытался несколько раз уведомить о побочных эффектах, но ответа не получил. –