Как установить Kotlin во время остановки цикла после 3 раз? - PullRequest
0 голосов
/ 30 июня 2018

Я новичок в Kotlin, я хочу, чтобы после 3-х раз я сделал условие остановки цикла while, пожалуйста, помогите! Также следует попросить пользователя выйти из игры или продолжить

val randomNumber: String = Random().nextInt(10).toString()
var guess= true
println("Welcome to the Number Guess Game")
println("Please guess number between 1 to 10")


do{
    val User=readLine()!!.toString()
    if(User==randomNumber){
        guess=false
    }
    else{"Sorry Please Try Again"}

}while(guess)
println("Congratulation You have guessed the right number.")

1 Ответ

0 голосов
/ 30 июня 2018

Попробуйте это.

var correct = false
var tries = 0

val randomNumber = Random().nextInt(10) + 1
println("Welcome to the number guess game")
println("Please guess a number between 1 to 10")

do {
    val input = readLine() ?: break
    val guess = input.toIntOrNull()

    tries += 1
    correct = guess == randomNumber
    if (!correct) {
        println("Sorry please try again!")
    }
} while (!correct && tries < 3)

if (correct) {
    println("Congratulation You have guessed the right number.")
} else {
    println("Sorry. The answer was $randomNumber")
}

Что следует отметить:

  • Random.nextInt(10) на самом деле вернет число от 0 до 9, поэтому вам нужно добавить 1.
  • Если readLine() возвращает ноль, читать больше нечего, поэтому readLine() ?: break либо возвратит строку, либо немедленно остановит цикл, если readLine() равно нулю.
  • while (!correct && tries < 3) означает продолжение, пока предположение неверно и tries не достигло 3. tries увеличивается на 1 (tries += 1) при каждом предположении. correct отслеживает, был ли угадан правильный номер (guess == randomNumber).
  • toIntOrNull превращает строку в Int, но возвращает ноль, если на самом деле это не число.
  • $randomNumber помещает значение randomNumber непосредственно в строку, чтобы вы могли распечатать его как часть сообщения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...