Завершение функции readLine () при обнаружении пробела - PullRequest
0 голосов
/ 09 июля 2019

Итак, я начал использовать Kotlin для решения некоторых базовых проблем на таких сайтах, как CodeChef и Codeforces, где я столкнулся с проблемой.

Вопрос требует от нас ввода 2 целочисленных переменных, скажем x и y , за которыми следуют y с пробелами, скажем m 1 , м 2 , м 3 и т. Д. До м Y . Но способ ввода - как показано:

4 3
3 2 3

И мой код Котлина для ввода:

fun main(args: Array<String>)
{
    val n = readLine()!!.toInt()
    val m = readLine()!!.toInt()
    var a:Int
    for(i in 1..m) {
         a= readLine()!!.toInt()
        //Some additional manipulation involving all three variables
     }
}

После отправки я получаю следующее сообщение:

java.lang.NumberFormatException: For input string: "4 3"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at ProgramKt.main(program.kt:2)

Итак, чтобы мой код работал, я должен как-то завершить метод readLine (), как только он встретит пробел. Или есть другой способ?

1 Ответ

0 голосов
/ 09 июля 2019

Ответ был довольно прост, после некоторого обсуждения в комментариях.Что нам нужно сделать, так это реализовать функцию split и затем отобразить каждый элемент как Int.

fun main(args: Array<String>){
    val xandy = readLine()!!.split(" ").map{it.toInt()}
    val elems= readLine()!!.split(" ").map{it.toInt()}
    var b=1
    var ans=0
    for(i in 1..xandy[1]){
        //Manipulation stuff
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...