#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])
}
}
}
}