kotlin - 遇到空格时终止 readLine() 函数
问题描述
所以,我已经开始使用 Kotlin 来解决像 CodeChef 和 Codeforces 这样的网站上遇到的一些基本问题。
这个问题要求我们输入 2 个整数变量,比如x和y,然后是y间隔的整数,比如m 1、 m 2、 m 3等等,直到m Y。但它的输入方式如下所示:
4 3
3 2 3
我的 Kotlin 输入代码是这样的:
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() 方法遇到空格时立即终止它。或者还有其他方法吗?
解决方案
经过评论中的一些讨论,答案很简单。我们要做的是实现 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
}
}
推荐阅读
- python - tf.contrib.image.rotate() 导致错误 - 具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- linux - 我无法列出大目录
- javascript - 从 2 个输入中获取并同时替换
- javascript - Firebase 搜索数据库按数组包含对象
- java - 根据供需调整价格
- php - GD 命令显示原始图像文本而不是图像
- android - 从 snap 中使用 android studio 颤振
- html - window.location.href thymeleaf 多个变量
- delphi - Win7 上的 TImageList 读取错误(ComCtl32 问题?) - 它是如何/为什么会发生的?
- bash - 如何使 sed(使用 bash)在换行符处停止?