#4 Javaで学ぶ標準入力の基本
Javaにおける標準入力の扱いは、決まった書き方さえ覚えてしまえば、あとはほぼ同じパターンの繰り返しで対応できます。この記事では、Javaで利用者からの入力を受け取る基本的な方法と、つまずきやすいポイントを解説します。
Scannerクラスを使う
Javaで標準入力を扱う際によく使われるのが、Scannerという機能です。
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("名前を入力してください: ");
String name = scanner.nextLine();
最初にScannerを使う準備をしたあと、nextLine()で1行分の入力を受け取る、という流れになります。
数値として受け取る
数値をそのまま受け取りたい場合は、nextInt()のような専用の機能を使います。
int age = scanner.nextInt();
Pythonのように文字列を後から変換するのではなく、最初から「数値として読み込む」という指示を出せるのがJavaの特徴です。数字ではない文字が入力されるとInputMismatchExceptionという例外が発生するため、以前の記事で触れたtry・catchと組み合わせると安全になります。
nextIntとnextLineを混在させる際の注意
nextInt()の後にnextLine()を呼ぶと、直前の入力の改行文字が残っていて空文字が読み込まれてしまう、というよくあるバグがあります。
int age = scanner.nextInt();
scanner.nextLine(); // 残った改行を読み捨てる
String name = scanner.nextLine();
このように、間に空のnextLine()を1回挟んで改行を読み捨てるのが定番の対処法です。
Javaならではの注意点
Scannerは毎回import文を書いて準備する必要があり、Pythonのinput()のような手軽さはありません。しかし、書き方自体はいつも同じパターンなので、一度テンプレートとして覚えてしまえば、あとはどんなプログラムでも同じように使い回せます。
hasNextで入力の有無を確認する
複数行の入力をまとめて処理したい場合、hasNextLine()を使うと、まだ読み込める行が残っているかを事前に確認できます。
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
まとめ
Javaの標準入力はScannerを使うのが基本です。nextLine()とnextInt()の使い分け、混在させる際の改行の扱い、hasNextLine()による繰り返し処理を覚えておけば、多くの場面に対応できます。
本ページはプロモーションを含みます。
参考書籍(PR)
Javaをもっと学びたい方には「スッキリわかるJava入門 第4版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿