在下面的代码中,我尝试编写一个简单的Scala程序来测试我最近对Scala的学习。
import java.io.PrintWriter
object Solution {
def getval(n: Int): Long = {
val stdin = scala.io.StdIn
var ans:Long = 0;
var i = 0;
for(i <- 1 to n){
val str:String = stdin.readLine;
val z:Int = stdin.readLine.trim.toInt;
if(str.charAt(0)=='h'){
if(z > 0) ans = ans + 1
}
else {
if(z > ans) ans = ans + 2
}
}
ans
}
def main(args: Array[String]) {
val stdin = scala.io.StdIn
val n = stdin.readLine.trim.toInt
val result = getval(n)
println(result)
}
}
编译时,它会一直给我No such file or directory
错误。我的代码出了什么问题?
输入:
4
abs 2
xyz 1
tes 3
pop 6
异常消息:
java.lang.NumberFormatException: For input string: "xyz 1"
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 scala.collection.immutable.StringLike.toInt(StringLike.scala:301)
at scala.collection.immutable.StringLike.toInt$(StringLike.scala:301)
at scala.collection.immutable.StringOps.toInt(StringOps.scala:29)
答案 0 :(得分:1)
您收到错误,因为您提供了一个字符串
xyz 1
到假定字符串为整数
的行val z:Int = stdin.readLine.trim.toInt;
如果您的数据看起来像一个字符串后跟空格和数字,那么
val z:Int = stdin.readLine.trim.split(' ').last.toInt
特别是你的第一行str - 读取abs2然后第二行尝试读取xyz 1