#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

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

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

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