как объединить эти циклы

#loops #kotlin

#циклы #kotlin

Вопрос:

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

  val className = readLine()!!.toUpperCase()
 val classNum = readLine()!!

 val pattern = """s d s $className.s $classNums. s . """.toRegex()
 val pattern2 = """s{58}[a-zA-Z]. s""".toRegex()

  for(i in 0..(lines.size-1) ) {

            var matchResult = pattern.find(lines[i])
            if (matchResult != null ) {
                // loop for 3rd line
               
                    if (pattern.containsMatchIn(lines[i])) {
                        println(lines[i])
                        if (pattern2.containsMatchIn(lines[i   1])) {
                            println(lines[i   1])
                        }

                        if (pattern2.containsMatchIn(lines[i   2 ])) {
                            println(lines[i   2])
                        }
                        if (pattern2.containsMatchIn(lines[i   3 ])) {
                            println(lines[i   3])
                        }
                        if (pattern2.containsMatchIn(lines[i   4  ])) {
                            println(lines[i   4])
                        }
                        if (pattern2.containsMatchIn(lines[i   5 ])) {
                            println(lines[i   5])
                       {
                        }
            }
        }


    }while (className != "QUIT")
  

Комментарии:

1. Можете ли вы описать, для чего предназначен код? (Я не могу сказать, имеет ли он вводящий в заблуждение отступ или отсутствующие / дополнительные фигурные скобки.)

2. Извините. Я ищу шаблон, и первый шаблон var предназначен для совпадения первой строки в текстовом файле. Шаблон 2 предназначен для второй строки в текстовом файле . Я пытаюсь повторить pattern2, если true, и перейти к следующему индексу.

3. Отсутствуют фигурные скобки.

Ответ №1:

Я думаю, вы хотите что-то вроде:

 for(i in 0..(lines.size-1) ) {

    var matchResult = pattern.find(lines[i])
    if (matchResult != null ) {

    // loop for 3rd line and more over 
        if (pattern.containsMatchIn(lines[i])) {
            println(lines[i])
        }
       
        for(k in (i 1)..(lines.size-1)) {    
            if (pattern2.containsMatchIn(lines[k])) {
                println(lines[k])
            }
        }
    }
}