Инициализация массивов в котлине

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

import java.util.Random fun oneSyllableWords() : String{ val oneSyllableWordArray = arrayOf("Life", "Love", "One", "On", "No", "Go") val random = Random() val randint = random.nextInt(oneSyllableWordArray.size) return oneSyllableWordArray[randint] } fun main(args:Array<String>){ var firstLineArray : Array<String> var syllablesRemaining = 5 while(syllablesRemaining<0) { val random = Random() val randint = random.nextInt(4) + 1 for (i in 0..4){ if(randint == 1){ firstLineArray[i] = oneSyllableWords() } } } } 

    Вы должны инициализировать свою переменную значением. Массивы представляют собой контейнеры с фиксированным размером, если я прав, что вам нужен массив длиной 5 здесь, вы можете использовать следующее, чтобы создать его с 5 пустыми строками в качестве старта:

     var firstLineArray: Array<String> = Array(5) { "" } 

    Или, если у вас все в порядке с Array<String?> И вам приходится иметь дело с возможными значениями null при чтении из массива, вы можете сделать следующее:

     var firstLineArray: Array<String?> = arrayOfNulls(5) 

    вы забудете init массив:

    Способы доставки:

     var firstLineArray = Array<String>() 

    или

     var firstLineArray = Array (0, { i -> "" }) 

    или

     var firstLineArray = emptyArray<String>() 

    Вы можете инициализировать массив String по приведенному ниже коду:

     var firstLineArray = arrayOfNulls<String>(5) 

    Вышеприведенный код даст массив String, содержащий нуль. Он возвращает Array<String?>

     var firstLineArray = Array<String>(5) { "it = $it" } // returns Array<String> var firstLineArray = arrayOf("a", "b", "c", "d", "e") // returns Array<String>