Initialization of arrays in Kotlin

I create a haiku generator in kotlin, but I get a strange firstLineArray variable that needs to 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()
            }
        }
    }
}
+4
source share
3 answers

You must initialize your variable with a value. Arrays are fixed-size containers, if I'm right that you need an array of length 5 here, you can use the following to create it with 5 empty lines as a start:

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

Or, if you're fine with Array<String?>and dealing with possible values nullwhen reading from an array, you can do:

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

init :

:

var firstLineArray = Array<String>()

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

var firstLineArray = emptyArray<String>()
+1

String :

var firstLineArray = arrayOfNulls<String>(5)

String, . Array<String?>

var firstLineArray = Array<String>(5) { "it = $it" } // returns Array<String>

var firstLineArray = arrayOf("a", "b", "c", "d", "e") // returns Array<String>
+1

Source: https://habr.com/ru/post/1678114/


All Articles