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>
Share:
10,987
Brandon Dodds
Author by

Brandon Dodds

Updated on July 13, 2022

Comments

  • Brandon Dodds
    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()
                }
            }
        }
    }