標準入力を受け取りたい

そういう時もある。書き方結構あるなぁ。

書き方1

import scala.io.StdIn.readLine
object Main {
  def main(args: Array[String]){
    val Array(a, b) = readLine().split(" ").map(_.toInt)
    println((a,b))
    val s = readLine()
    println(s)
  }
}

実行例

$ scala App.scala
1 9
(1,9)
hogehoge 666
hogehoge 666
$ echo -e 1 3 \\n hogehoge | scala App.scala
(1,3)
 hogehoge

書き方2

import scala.io.StdIn.readLine
object Main {
  def main(args: Array[String]){
    for(line <- io.Source.stdin.getLines()) {
      val numAry = line.split(' ').map { _.toInt }
      println(numAry.sorted.mkString(" "))
    }
  }
}

実行例

$ echo -e 1 3 4 2 \\n3 2 1 3 2| scala App.scala
1 2 3 4
1 2 2 3 3

書き方3

object Main {
  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)
    val a, b = sc.nextInt()
    println(a)
    println(b)
  }
}