在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>