Чтение нескольких входов из одной строки способом Scala

Я попытался использовать 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))

Кто-то предложил мне просто использовать класс Scanner от Java, (Scanner. nextInt()), но есть ли хороший идиоматический способ сделать это в Scala?

Edit: Мое решение по примеру paradigmatic:

val Array(a,b) = readLine().split(" ").map(_.toInt)

Последующий вопрос: Если бы в строке была смесь типов, как бы вы ее извлекли? (Скажем, слово, int и процент как Double)

9
задан Trevor 26 September 2011 в 05:17
поделиться