Как вернуться к вводу числа в консоль, если ввел текст?
Не могу разобраться, как вернуться к набору числа, если ввел не число, а текст.
fun main () {
println ("Введите первое число")
var n: Int = readLine()?.toIntOrNull() ?: return
Ответы (2 шт):
Автор решения: Vadik
→ Ссылка
Сделайте цикл while до тех пор, пока в n не появится число:
fun main() {
var n: Int? = null
while (n == null) {
println("Введите первое число")
n = readLine()?.toIntOrNull()
}
println("Число: $n")
}
Автор решения: Alexey
→ Ссылка
Может новичкам пригодиться... Я его победил =) Мой рабочий код... По условию задачи необходимо:
- Ввести число с клавиатуры в консоль.
- Введите следующие числа, каждое с новой строки. Используйте для этого цикл. Начните итерацию цикла заново, если пользователь ввёл не число. Используйте для этого нуллабельные типы и elvis-operator.
- Выведите в консоль количество введённых положительных чисел по окончании ввода чисел. Используйте if, чтобы проверить, что число положительное. Посчитайте сумму введённых чисел.
fun main () {
print("Введите количество вводимых в консоль чисел: ")
val number = inputNumbers()
println("Желаемое количество чисел для ввода = $number")
var mainNum = 0
var sumAllNum = 0
var sumPosNum = 0
var sumAllPosNun = 0
while (mainNum < number){
println("Введите число: ")
val numberString = readLine()?.toIntOrNull() ?: continue
mainNum++
sumAllNum += numberString
if (numberString > 0) {
sumPosNum++
if (numberString > 0)
sumAllPosNun += numberString
}
}
println("Количество вводов чисел = $number ")
println("Сумма всех чисел = $sumAllNum")
println("Количество положительных чисел = $sumPosNum")
println("Сумма положительных чисел = $sumAllPosNun")
}
fun inputNumbers (): Int {
return readLine()?.toIntOrNull() ?: inputNumbers()
}