Так лучше? Если нет, то хз тогда как правильноfun main() { val randomNumber = (1..10).random() println("Попробуйте угадать число от 1 до 10: ") var userNumber = getUserInput() var result: Result do { result = checkNumber(randomNumber, userNumber) when (result) { Result.Correct -> println("Вы угадали число!") Result.Lower -> println("Ваше число меньше загаданного") Result.Higher -> println("Ваше число больше загаданного") Result.Invalid -> println("Число должно быть от 1 до 10!") } if (result != Result.Correct){ println("Попробуйте еще раз: ") userNumber = getUserInput() } } while (result != Result.Correct) } fun getUserInput(): Int { val userNumber = readlnOrNull()?.toIntOrNull() return if (userNumber != null && userNumber in 1..10) { userNumber } else { println("ОТ 1 ДО 10!") getUserInput() } } enum class Result { Correct, Lower, Higher, Invalid } fun checkNumber(randomNumber: Int, userNumber: Int): Result { return when { userNumber == randomNumber -> Result.Correct userNumber in 1..10 -> { if (userNumber < randomNumber) { Result.Lower } else { Result.Higher } } else -> Result.Invalid } }
Я на гошечке любимой пишу, но могу сказать, что if (result != Result.Correct) можно выше поднять, до проверки result, по принципу раннего выхода, чтобы не выполнять лишних проверок
https://habr.com/ru/articles/348074/