Initializing arrays in kotlin
10,987
Solution 1
You have to initialize your variable with a value. Arrays are fixed size containers, if I'm right that you need an array with a length of 5 here, you can use the following to create it with 5 empty strings as a start:
var firstLineArray: Array<String> = Array(5) { "" }
Or if you're okay with having an Array<String?>
and having to deal with possible null
values when reading from the array, you can do:
var firstLineArray: Array<String?> = arrayOfNulls(5)
Solution 2
you forget init the array:
Ways:
var firstLineArray = Array<String>()
or
var firstLineArray = Array (0, { i -> "" })
or
var firstLineArray = emptyArray<String>()
Solution 3
You can initialize a String array by the below code:
var firstLineArray = arrayOfNulls<String>(5)
The above code will give a String array containing null. It returns Array<String?>
var firstLineArray = Array<String>(5) { "it = $it" } // returns Array<String>
var firstLineArray = arrayOf("a", "b", "c", "d", "e") // returns Array<String>
Author by
Brandon Dodds
Updated on July 13, 2022Comments
-
Brandon Dodds almost 2 years
I am making a haiku generator in kotlin but I am getting a weird 'variable firstLineArray must be initialized' on this block of code.
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() } } } }