我试图用readInt()
从同一行读取两个整数,但这不是它的工作原理。从同一行读取多个输入斯卡拉方式
val x = readInt()
val y = readInt()
随着1 727
输入我会在运行时出现以下异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1 727"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at scala.collection.immutable.StringLike$class.toInt(StringLike.scala:231)
at scala.collection.immutable.StringOps.toInt(StringOps.scala:31)
at scala.Console$.readInt(Console.scala:356)
at scala.Predef$.readInt(Predef.scala:201)
at Main$$anonfun$main$1.apply$mcVI$sp(Main.scala:11)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:75)
at Main$.main(Main.scala:10)
at Main.main(Main.scala)
我得到的程序通过使用readf
工作,但它似乎很尴尬和难看的对我说:
val (x,y) = readf2("{0,number} {1,number}")
val a = x.asInstanceOf[Int]
val b = y.asInstanceOf[Int]
println(function(a,b))
有人建议我只使用Java的Scanner类(Scanner.nextInt()
),但在Scala中有没有一种很好的惯用方法?
编辑: 我的解决方案如下典范的例子:
val Array(a,b) = readLine().split(" ").map(_.toInt)
的后续问题:如果有在字符串你会如何解压类型的混合? (说一个字,一个int和一个百分比作为双人间)
这可能有帮助:http://ikaisays.com/2009/04/04/using-pattern-matching-with-regular-expressions-in-scala/ – Swiss