Kotlin读取单行空格分隔多类型数据报NumberFormatException问题
问题排查与修正方案
存在的问题
- 读取逻辑错误:
readLine()的作用是一次性读取整行输入,你第一次调用readLine()时已经把包含5个空格分隔字段的整行内容全部读取,尝试将包含空格的整串直接转换为Int,直接触发数值格式转换异常。同时混用readLine()和Scanner两种输入读取方式,会导致输入流读取顺序混乱,无法正确匹配每个目标字段。 - 语法错误:
main函数参数类型定义不合法,Kotlin标准入口函数的参数应为Array<String>而非Array。
修正方案
统一使用Scanner读取所有字段即可:Scanner默认以空白符作为输入分隔符,无需手动处理行拆分,可直接按顺序读取对应类型的字段,完全符合题目输入要求。
修正后的代码如下:
import java.util.Scanner fun main(args: Array<String>) { val scanner = Scanner(System.`in`) val a: Int = scanner.nextInt() val b: Long = scanner.nextLong() val c: Char = scanner.next().single() val d: Float = scanner.nextFloat() val e: Double = scanner.nextDouble() println(a) println(b) println(c) println(d) println(e) }
内容的提问来源于stack exchange,提问作者mahmoud deif
相关产品推荐
相关产品推荐

