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