我是新來的斯卡拉,如何讀取一行中給出的整數數字?例如:在斯卡拉輸入數組
5
10 20 30 40 50
我想將它存儲在一個數組中。如何分割輸入並將其存儲在數組中?
可以通過readInt()
方法讀取單個整數,然後使用readLine()
讀取輸入,但不知道如何拆分並將其存儲在數組中。
我是新來的斯卡拉,如何讀取一行中給出的整數數字?例如:在斯卡拉輸入數組
5
10 20 30 40 50
我想將它存儲在一個數組中。如何分割輸入並將其存儲在數組中?
可以通過readInt()
方法讀取單個整數,然後使用readLine()
讀取輸入,但不知道如何拆分並將其存儲在數組中。
試試這個:
val s = readLine
val a: Array[Int] = s.split(" ").map(_.toInt)
或 val a = readLine.split(" ").map(_.toInt)
;)
沒有評論:
scala> val in = "10 20 30 40 50"
in: String = 10 20 30 40 50
scala> (in split " ")
res0: Array[String] = Array(10, 20, 30, 40, 50)
scala> (in split " ") map (_.toInt)
res1: Array[Int] = Array(10, 20, 30, 40, 50)
隨着評論,我真想fscanf
:
scala> val f"$i%d" = "10"
<console>:7: error: macro method f is not a case class, nor does it have an unapply/unapplySeq member
val f"$i%d" = "10"
^
但對我來說,對於您的用例,您需要一個簡單的語法來掃描整數。
而不必重複自己:
scala> val r = """(\d+)""".r
r: scala.util.matching.Regex = (\d+)
scala> r findAllMatchIn in
res2: Iterator[scala.util.matching.Regex.Match] = non-empty iterator
scala> .toList
res3: List[scala.util.matching.Regex.Match] = List(10, 20, 30, 40, 50)
您總是可以爲fscanf貢獻代碼... :)畢竟,f內插函數_is_是一個宏。 –
不需要'.toArray'; 'split'返回一個'Array' – dhg
問題解決! –
下一個:從數組切換到不可變的數據... –