【问题标题】:Parse a line of input into different types in Kotlin在 Kotlin 中将一行输入解析为不同类型
【发布时间】:2021-10-18 23:16:03
【问题描述】:

这个问题需要打印数据类型 https://codeforces.com/group/MWSDmqGsZm/contest/219158/problem/B

但他只需要一行输入,每种数据类型之间有空格

这是我的代码,有什么问题

import java.util.Scanner

fun main(args:Array){

val scanner = Scanner(System.`in`)

var a:Int=readLine()!!.toInt()
var b:Long=readLine()!!.toLong()
var c:Char=scanner.next().single()
var d:Float=readLine()!!.toFloat()
var e:Double=readLine()!!.toDouble()

println(a)
println(b)
println(c)
println(d)
println(e)

}

线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“45 65896532145 a 45.23 65423.325” 在 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) 在 java.base/java.lang.Integer.parseInt(Integer.java:660) 在 java.base/java.lang.Integer.parseInt(Integer.java:778) 在 Test_1Kt.main(test 1.kt:7)

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    问题是您无法将整个输入解析为整数,因为您期望的输入是一组值之间有空格。空间本身无法解析为 Integer(这是导致异常的原因)

    要解决这个问题,首先,您需要拆分输入并解析每个元素。您可以使用 kotlin 内置函数拆分它,即

    val input = readLine() ?: ""
    val inputElement = input.split(" ")
    

    这里,inputElement 是一个字符串数组,由您输入的所有元素组成。接下来,您需要通过inputElement 索引解析每个元素

    val a:Int=inputElement[0].toInt()
    val b:Long=inputElement[1].toLong()
    val c:Char=inputElement[2].single()
    val d:Float=inputElement[3].toFloat()
    val e:Double=inputElement[4].toDouble()
    
    println(a)
    println(b)
    println(c)
    println(d)
    println(e)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 2020-07-08
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多