ArrayIndexOutOfBoundsException, присваивающий charArrayOf () - PullRequest
0 голосов
/ 27 апреля 2020

Может кто-нибудь помочь мне понять, где я ошибся, потому что мне кажется, что я продолжаю получать эту ошибку:

java .lang.ArrayIndexOutOfBoundsException: индексировать 0 за пределами длины 0

fun main()
{

    arrayOfNulls<String?>(size = 11)
    var firstWord : String?

    print("Enter in the sentence ")
    var strAnagram : String = readLine()!!

    var arrUserInput = strAnagram.split(" ")
    var  arrFirstLetter = charArrayOf()

    for(x in 0..arrUserInput.size+1)
    {
        firstWord = arrUserInput.get(x)
        arrFirstLetter[x] = firstWord[0]

    }

    for (y in 0..11)
    {
    println(arrFirstLetter[y])
    }

}

1 Ответ

3 голосов
/ 27 апреля 2020

Когда вы пишете var arrFirstLetter = charArrayOf(), вы создаете пустой массив.

Затем, когда вы пишете arrFirstLetter[x] = firstWord[0], вы пытаетесь присвоить элемент с индексом x пустого массива. Поскольку массив пуст, это генерирует ArrayIndexOutOfBoundsException.

. В общем, лучше избегать попыток l oop над коллекциями, используя их индекс, и вместо этого использовать для l oop или расширение map .

Вы можете распечатать первые буквы каждого слова следующим образом:

fun main() {
    print("Enter in the sentence ")
    val userInputWords: List<String> = readLine()?.split(" ") ?: emptyList()

    for (word in userInputWords) {
        println("First letter: ${word[0]}")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...