Проблемы с вложенными циклами while в Kotlin - PullRequest
0 голосов
/ 31 марта 2020

Итак, я пытался создать функцию с именем createSquare(), где первый аргумент - это символ, используемый для создания квадрата, а второй аргумент - это его длина стороны, который должен был работать как

createSquare('a', 3)
/* Output is 
aaa
aaa
aaa
*/

. Я попытался использовать while l oop, чтобы добиться этого следующим образом.

fun createSquare(character: Char = '*', side:Int = 3){
  var i = 0
  var j = 0
  while(i < side){
    while(j < side){
      print(character)
      ++j
    }
    print('\n')
    ++i
  } 
}

fun main(args: Array<String>) {
  createSquare() // Default arguments passed
}

И вот как я думал, что вложенные циклы while будут работать:

  1. Выполните внутреннее, пока l oop

  2. Строка перемещает выходной курсор на следующую строку

  3. i с шагом в 1

  4. Шаги 1-3 повторяются до тех пор, пока i не станет 3, останавливая все вложенное l oop

Однако вместо этого это вывод:

*** //Output

/*
Where I expected


***
***
***

*/

В моем коде могут быть глупые ошибки, так как я еще начинающий программист.

Заранее спасибо!

1 Ответ

0 голосов
/ 31 марта 2020

более простой способ записать эти циклы - использовать диапазоны

for (val i in 0..side) {

}

или

repeat(side) { i-> 

}

, в этом есть преимущество (и недостаток), чтобы не пропускать счетчик

все они по существу скомпилируются до for-l oop в байт-коде

из c, вы также можете l oop вручную, но, очевидно, что это errorprone

...