Как этот код формирует z-форму с циклами for? - PullRequest
0 голосов
/ 22 июня 2019
public class Main {

    public static void main(String[] args) {
        int numTiles = 8;
        for(int i=0; i<numTiles;i++){
            for(int j=0; j<numTiles;j++){
                if(i==0 || i==numTiles-1){
                    System.out.print("1");  
                }else if (i+j==numTiles-1){
                    System.out.print("1");              
                }else{
                    System.out.print(" ");
                }               
            }
            System.out.println();
        }
    }
}

Я вижу, что он начинается с цикла for, который повторяется в зависимости от значения numTiles.Затем второй цикл for повторяется 8 раз и выводит 8 1s.Я не понимаю else-if и else в цикле for.

Если бы я мог получить разъяснения об условных выражениях else-if и else, это будет оценено.

Ответы [ 2 ]

1 голос
/ 22 июня 2019

i представляет индекс строки, а j представляет столбцы.

  • if печатает верхнюю и нижнюю строки.
  • Печать else ifдиагональ, так как она эквивалентна линейной функции x + y = c (только там, где x,y равны i,j).

Рассмотрим следующий эквивалентный код в Javascript, где я переключил печать внутри else if до цифры 2:

let numTiles = 8;
for (let i = 0; i < numTiles; i++) {
  let row = "";
  for (let j = 0; j < numTiles; j++) {
    if (i == 0 || i == numTiles - 1) {
      row += "1";
    } else if (i + j == numTiles - 1) {
      row += "2";
    } else {
      row += " ";
    }
  }
  console.log(row + '\n');
}
1 голос
/ 22 июня 2019

i - номер строки, а j - номер столбца.(Это верно, потому что println происходит только тогда, когда i увеличивается, а не j.)

Когда i==0, вы находитесь в верхнем ряду, а когда i==numTiles-1, вы 'на нижнем ряду.Таким образом, первый оператор if выводит верхнюю и нижнюю горизонтальные линии Z.

Когда i+j==numTiles-1, вы находитесь на главной диагонали.Таким образом, второе выражение if выводит диагональную линию Z.

Поскольку Z - это просто верхняя и нижняя горизонтальная линия и диагональная линия, вместе, они печатают все это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...