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

Kotlinにおける標準入力の扱いは、Javaの仕組みを引き継ぎつつ、より簡潔に書けるよう整理されています。この記事では、Kotlinで利用者からの入力を受け取る基本的な方法と、安全な変換の仕方を解説します。

readLine()を使う

Kotlinには、readLine()という手軽な機能が用意されています。

println("名前を入力してください: ")
val name = readLine()

JavaのScannerのような事前準備が不要で、Pythonのinput()に近い感覚で使えるのがKotlinの特徴です。

Null許容型として受け取る

ここで注意したいのが、readLine()の結果は「値が入っていないかもしれない(null許容型)」として扱われる点です。これは、入力の途中で終了された場合などに値が取得できない可能性を考慮した、Kotlinらしい安全設計です。数値として使う場合は、次のように変換します。

val age = readLine()?.toIntOrNull() ?: 0

「入力が取得できて、かつ数値に変換できれば使う。それ以外は0を使う」という処理を1行で表しています。

既定値を使って安全に取り出す

数値ではなく文字列としてそのまま使いたい場合、入力が無かったときの既定値を用意しておくには?:だけで十分です。

val name = readLine() ?: "名無しさん"
println("こんにちは、$name さん")

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

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

val line = readLine() ?: ""
val numbers = line.split(" ").mapNotNull { it.toIntOrNull() }
println(numbers.sum())

mapNotNullは、変換に失敗した要素(null)を自動的に取り除きながら、変換に成功した値だけを集めてくれる便利な関数です。

Kotlinならではの注意点

toIntOrNull()は、変換に失敗してもエラーで止まらず、代わりに「値なし」を返してくれる便利な機能です。JavaのInteger.parseInt()のように、失敗すると即エラーになる書き方とは対照的な、Kotlinらしい安全な設計と言えます。

まとめ

Kotlinの標準入力はreadLine()で手軽に扱えますが、結果がnull許容型である点には注意が必要です。toIntOrNull()やmapNotNullのような安全な変換方法を活用しましょう。


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

参考書籍(PR)

Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。


PR

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

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

コメント

このブログの人気の投稿

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

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

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