#4 Scalaで学ぶ標準入力の基本

Scalaにおける標準入力は、JVM上で動く言語らしく、Javaの仕組みを利用しつつ、より簡潔な専用の機能も用意されています。この記事では、Scalaで利用者からの入力を受け取る基本的な方法と、実務での注意点を解説します。

scala.io.StdInを使う

Scalaでは、scala.io.StdInという機能を使って入力を受け取ります。

println("名前を入力してください: ")
val name = scala.io.StdIn.readLine()
println(s"こんにちは、${name}さん")

KotlinやSwiftのreadLine()と似た、シンプルな書き方になっています。よく使う場合はimport scala.io.StdIn._としておくと、readLine()だけで呼び出せて記述が短くなります。

数値として受け取る

数値をそのまま受け取りたい場合は、専用の機能を使います。

val age = scala.io.StdIn.readInt()
val height = scala.io.StdIn.readDouble()

ただし、数字ではない文字が入力されるとエラーになるため、実際のプログラムでは入力のチェックも合わせて行います。文字列として受け取ってからtoIntOptionで安全に変換する方法もよく使われます。

val input = scala.io.StdIn.readLine()
input.toIntOption match {
  case Some(n) => println(s"数値として受け取りました: $n")
  case None    => println("数値ではありません")
}

toIntOptionは、変換に失敗しても例外を発生させず、代わりに「値が無い」ことを表すNoneを返してくれる安全な変換方法です。

複数の値をまとめて受け取る

スペース区切りで複数の値が入力される場合は、splitで分割してから、それぞれを変換します。

val line = scala.io.StdIn.readLine() // 例: "3 5"
val numbers = line.split(" ").map(_.toInt)
println(numbers.sum) // 8

Scalaならではの注意点

ScalaはJavaの資産を活かせる言語のため、JavaのScannerを使った入力の受け取り方もそのまま動きます。ただし、学習中はscala.io.StdInを使ったScalaらしい書き方に慣れておくほうが、この先の学習がスムーズに進みます。特にtoIntOptionのような「失敗する可能性がある処理をOptionで安全に扱う」考え方は、Scalaのさまざまな場面で繰り返し登場する重要な発想なので、標準入力の練習を通じて早めに馴染んでおくとよいでしょう。

まとめ

Scalaの標準入力はscala.io.StdInを使うのが基本です。readLine()とreadInt()を状況に応じて使い分け、失敗する可能性がある変換にはtoIntOptionを活用しましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本