Не могу разобраться с Null, как проверить что я ввел в консоль отрицательное число?
Не могу разобраться с Null, как проверить что я ввел в консоль отрицательное число ? Вообще необходимо посчитать сумму положительных чисел, я новичок в программировании с нуля, и в проверке null не могу разобраться.
fun main() {
println("Введите желаемое количество чисел: ")
val number: Int? = readLine()?.toIntOrNull()
val zero = 0
if (number!=null) {
println("Вы ввели число $number")
}
if (number < zero) {
println("Вы ввели отрицательное число")
}
if (number==null) {
println("Вы ввели не число")
}
}
Ответы (4 шт):
Автор решения: Eugene Krivenja
→ Ссылка
Вы же на Котлине пишете, компактнее надо и меньше if-ов.
number?.also {
println("Вы ввели число $it")
if (it < zero) {
println("Вы ввели отрицательное число")
} else {
// тут считаем положительные
}
} ?: println("Вы ввели не число")
Автор решения: Alexey
→ Ссылка
Рабочий код, может кто подскажет где разжеван синтаксис (видимо это моя проблема)... я новичок, ведущего который дает волшебный пендель и направляет на путь истинный нет =)
fun main() {
println("Введите желаемое количество чисел: ")
val number: Int? = readLine()?.toIntOrNull()
val zero:Int = 0
number?.also {
println("Вы ввели число $it")
if (it < zero) {
println("Вы ввели отрицательное число")
} else {
println("Вы ввели положительное число")
}
} ?: println("Вы ввели не число")}
Автор решения: Эникейщик
→ Ссылка
В исходном коде достаточно вторую проверку внести внутрь первой, тогда все будет работать
fun main() {
println("Введите желаемое количество чисел: ")
val number: Int? = readLine()?.toIntOrNull()
val zero = 0
if (number != null) {
println("Вы ввели число $number")
if (number < zero) {
println("Вы ввели отрицательное число")
}
}
else {
println("Вы ввели не число")
}
}
Автор решения: 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()
}