7

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()
            }
        }
    }
}

4 Answers 4

9

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)
Sign up to request clarification or add additional context in comments.

Comments

3

you forget init the array:

Ways:

var firstLineArray = Array<String>()

or

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

or

var firstLineArray = emptyArray<String>()

Comments

2

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>

Comments

0
val read = Scanner(System.'in')
print("Enter length: ")
val length = read.nextInt()
var arry: Array<Int> = Array(length){0}

for(i in 1..length-1){
arry[i] = read.nextInt()
}

To read the int values from the input and store the Array as integers

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.