我試圖用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