在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() } } } } 

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

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

    或者如果你有一个Array<String?>没关系,并且在从数组中读取数据时必须处理可能的null值,你可以这样做:

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

    你忘记初始化数组:

    方法:

     var firstLineArray = Array<String>() 

    要么

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

    要么

     var firstLineArray = emptyArray<String>() 

    你可以通过下面的代码来初始化一个String数组:

     var firstLineArray = arrayOfNulls<String>(5) 

    上面的代码将给出一个包含null的String数组。 它返回Array<String?>

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