Я должен написать простую программу, чтобы увидеть, как работают вложенные циклы. У меня проблема в том, что мой внешний цикл не зацикливается. Внутренний цикл работает нормально, только не внешний.

currentRow = 1;
currentColumn = 1;
numRows = 2;
numColumns = 3;

while(currentRow <= numRows){
   currentColumnLetter = 'A';
   while(currentColumn <= numColumns){
      System.out.print("" + currentRow + currentColumnLetter + " ");
      currentColumn++;
      currentColumnLetter++;
   }
   currentRow++;
}

Ожидаемые результаты: 1A 1B 1C 2A 2B 2C

Результаты, которые я получаю: 1A 1B 1C

1
sleepydreaming 11 Ноя 2019 в 22:34

2 ответа

Лучший ответ

Цикл while является важной конструкцией для проверки логического условия в каждом цикле. Но конструкция for больше подходит для вашего случая использования. Это напомнило бы вам сбросить / увеличить счетчик цикла.

    int numRows = 2;
    int numColumns = 3;
    char currentColumnLetter;
    for (int currentRow = 1; currentRow <= numRows; currentRow++) {
        currentColumnLetter = 'A';
        for (int currentColumn = 1; currentColumn <= numColumns; currentColumn++) {
            System.out.print("" + currentRow + currentColumnLetter + " ");
            currentColumnLetter++;
        }
    }

Пример использования цикла while - при обработке итераторов.

while (myIterator.hasNext()) {
    ....
}
1
fedup 11 Ноя 2019 в 20:05

Вам нужно Сбросить currentColunm, потому что у вас есть условие, что если currentColumn меньше или равно некоторому числу, оно напечатает .. в противном случае это не будет. ,

Вот в чем проблема ... currentColumn перебирает ваше состояние, поэтому все, что вам нужно сделать , это ->

currentRow = 1;
currentColumn = 1;
numRows = 2;
numColumns = 3;

while(currentRow <= numRows){
   currentColumnLetter = 'A';
   while(currentColumn <= numColumns){
      System.out.print("" + currentRow + currentColumnLetter + " ");
      currentColumn++;
      currentColumnLetter++;
   }
   currentColumn = 1; //This was the part missing
   currentRow++;
}
0
Bryan J. Diaz 11 Ноя 2019 в 20:22