Работа метода Scanner.nextInt()

141
12 апреля 2022, 00:30

Почему появляется сообщение о возникновении NumberFormatException? Если использовать val initialMoney = nextLine().toInt(), то всё ок!? То есть приходится сначала вводить строку, а только потом преобразовывать её в число. Почему сразу нельзя ввести число и хранить его в переменной???

import java.util.Scanner
fun main() {
    val scanner = Scanner(System.`in`)
    var initialMoney = scanner.nextInt()
    val numbers = scanner.nextLine().split(" ")
    for (number in numbers) {
        val digit = number.toInt()
        initialMoney -= digit
        if (initialMoney < 0) {
            println("Error, insufficient funds for purchase. You have ${initialMoney + digit}, but you need $number.")
            break
        }
    }
}
Answer 1

У вас массив numbers содержит пустую строку, поэтому вот здесь

val digit = number.toInt()

и валится с NumberFormatException.

Мне не ясно, что вы там вводите, возможно просто лишние пробелы надо обрезать.

READ ALSO
Автозапуск приложения

Автозапуск приложения

Столкнулся со стандартной проблемой: запуск приложения сразу после включения телефонаВсе советы либо устарели, либо не работают

223
return или break для выхода из цикла?

return или break для выхода из цикла?

Допустим у нас есть код вида:

202
Данные с другой стены сообщества VK (VK API, JSON, Retrofit, JAVA)

Данные с другой стены сообщества VK (VK API, JSON, Retrofit, JAVA)

Делаю Api запрос на получение постов тестовой группы VK (все по докам Вконтакте):

173