kotlin Исключение в потоке "main" java.lang.IndexOutOfBoundsException - PullRequest
0 голосов
/ 16 декабря 2018

Исключение в потоке "main" java.lang.IndexOutOfBoundsException: Индекс: 62, Размер: 62

Я не могу исправить эту досадную ошибку.Я использую индексы = размер списка, но есть это исключение

import java.io.File

fun main(args: Array<String>) {
    fun markdownToHtmlSimple(inputName: String) {
        val writer = File("out.txt").bufferedWriter()
        val str = File(inputName).readLines()
        var countTagI = 0
        var countTagB = 0
        var countTagS = 0
        var openedTagI = false
        var openedTagB = false
        var openedTagS = false
        writer.write("<html>\n\t<body>\n\t\t<p>")
        for (i in 0..str.size) {
            if (str[i] == "") writer.newLine()
            else {
                Regex("""\*\*""").replace(str[i], "☺") //временная замена для облегчения поиcка
                Regex("""\~\~""").replace(str[i], "☻") //аналогично
                val currentStr = str[i].toList()
                for (j in 0..currentStr.size) {
                    when {
                        currentStr[j] == '*' -> countTagI++
                        currentStr[j] == '☺' -> countTagB++
                        currentStr[j] == '☻' -> countTagS++
                    }
                }
                if ((countTagB % 2 == 0) && (countTagI % 2 == 0) && (countTagS % 2 == 0)) for (j in 0..currentStr.size) {
                    when {
                        (currentStr[j] == '*') && !openedTagI -> {
                            writer.write("<i>")
                            openedTagI = true
                        }
                        (currentStr[j] == '*') && openedTagI -> {
                            writer.write("</i>")
                            openedTagI = false
                        }
                        (currentStr[j] == '☺') && !openedTagB -> {
                            writer.write("<b>")
                            openedTagI = true
                        }
                        (currentStr[j] == '☺') && openedTagB -> {
                            writer.write("</b>")
                            openedTagI = false
                        }
                        (currentStr[j] == '☻') && !openedTagS -> {
                            writer.write("<s>")
                            openedTagS = true
                        }
                        (currentStr[j] == '☻') && openedTagS -> {
                            writer.write("</s>")
                            openedTagS = false
                        }
                        else -> writer.write(currentStr[j].toString())
                    }
                }
            }

        }
    }
    markdownToHtmlSimple("input.txt")

}

Я использую только три конструкции, и они ограничены размером массивов. Пожалуйста, помогите, где моя ошибка?

1 Ответ

0 голосов
/ 16 декабря 2018

Заменить

 0..str.size

на

 0 until str.size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...