Почему я не могу добавить два номера в Котлин, используя этот исходный код?

Это код, который я создал для добавления двух чисел:

import java.util.* fun main(args: Array<String>) { val (a, u) = readLine()!!.split(' ').map(String::toInt) println(add(a, u)) } fun add(a: Int, u: Int) = a + u 

Однако я продолжаю получать эту ошибку:

 Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:592) at java.lang.Integer.parseInt(Integer.java:615) at Kotlin_learnKt.main(kotlin^learn.kt:6) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Process finished with exit code 1 

Я не уверен, что я делаю неправильно. Я просто хочу предложить пользователю ввести два числа, добавить код, а затем вернуть результат.

Из трассированной стека стека исключений не похоже, что вы вводите что-либо, поэтому readLine() возвращает пустую строку, которая не может быть проанализирована как значение int.

Я рекомендую читать каждое значение int отдельно при устранении неполадок:

 fun readInt(message: Any?): Int { print(message) return readLine()!!.toInt() } val a = readInt("a = ") val u = readInt("u = ") println("a + u = ${a + u}") 

Или если вы хотите получить фантазию:

 fun readInt(message: Any?): Int { val promptSequence = generateSequence( seedFunction = { print(message) readLine() }, nextFunction = { invalidInput -> println("Input '$invalidInput' is not an int value. Try again.") print(message) readLine() } ) return promptSequence.map(::Scanner).first(Scanner::hasNextInt).nextInt() } val a = readInt("a = ") val u = readInt("u = ") println("a + u = ${a + u}") 
 import java.util.Scanner fun main(vararg args: String) { val input = Scanner(System.`in`) val a = input.nextInt() val b = input.nextInt() println(a + b) } 
Intereting Posts
Kotlin проверка недействительности if-else функциональный подход … Как? Являются ли coroutines просто синтаксическим сахаром вокруг обработчиков завершения? Как управлять потоком без .flatMap, который разбивает реактивный поток, предотвращающий работу операторов, таких как distinctUntilChanged, от работы со всем потоком Facebook-мессенджер для анимации чата Неподвижная последовательность, функциональная / потоковая идиома Kotlin Anko Logging с verbose и debug не работает Как отменить подписку на события в TornadoFX? Anko + Content Provider, не обновляет данные об изменении Неразрешенная ссылка на функцию в Kotlin Android Могу ли я обновить глубоко вложенный неизменный объект, не сообщая ему о его контексте? Демонстрационная версия Corda V1.0 IOU не работает в Windows Функции области применяются / with / run / also / let: Концепция именования? Приложение Kotlin с плагином приложения Gradle Ошибка сборки после обновления до Android Studio 3.0 с помощью Kotlin компилировать смешанный код Kotlin и Java из командной строки