在kotlin中初始化数组

Bra*_*dds 5 arrays variables initialization arraylist kotlin

我在kotlin中制作一个haiku生成器但是我在这个代码块上得到一个奇怪的'变量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()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

zsm*_*b13 7

您必须使用值初始化变量.数组是固定大小的容器,如果我在这里需要一个长度为5的数组,你可以使用下面的代码来创建5个空字符串作为开头:

var firstLineArray: Array<String> = Array(5) { "" }
Run Code Online (Sandbox Code Playgroud)

或者如果您在从数组中读取时Array<String?>必须处理可能的null值,那么您可以:

var firstLineArray: Array<String?> = arrayOfNulls(5)
Run Code Online (Sandbox Code Playgroud)


Dam*_*ero 3

你忘记初始化数组:

方法:

var firstLineArray = Array<String>()
Run Code Online (Sandbox Code Playgroud)

或者

var firstLineArray = Array (0, { i -> "" })
Run Code Online (Sandbox Code Playgroud)

或者

var firstLineArray = emptyArray<String>()
Run Code Online (Sandbox Code Playgroud)