Java Scanner完全ガイド|標準入力・ファイル読込・落とし穴まで徹底解説
CONTENTS
Java Scannerとは?入力処理の基本概念

Scannerが「初心者向け」と言われる理由
Javaで入力処理を学ぶとき、最初に登場するのがjava.util.Scannerです。
Scannerは、標準入力(キーボード)とファイル入力を同じ感覚で扱えるため、初学者でも理解しやすい設計になっています。
- 型変換を自動で行ってくれる
- メソッド名が直感的
- 1行ずつ/単語ずつを簡単に扱える
こういった特徴から、学習用・小規模ツールでは特に重宝されます。
トークン分割という考え方
Scannerの核心は「入力を区切り文字で分割する」点にあります。
- 入力は「トークン」という単位に分解される
- デフォルトの区切り文字は空白・改行
next()系メソッドは次のトークンを取得する
この仕組みを理解すると、
「なぜ空文字が取れるのか」「なぜ例外が出るのか」が説明できるようになります。
Scannerを使う準備と基本の書き方
importとインスタンス生成
Scannerはjava.utilパッケージに含まれます。
標準入力の場合は以下のように生成します。
Scannerは入力元を包むラッパーです。
どこから入力を受け取るかをコンストラクタで指定します。
Scannerを1つにまとめる設計の重要性
実務でよくある失敗が、同じ入力元に複数Scannerを作ることです。
- 入力順が分からなくなる
- 読み取り位置がズレる
- デバッグが困難になる
Scannerは基本的に「1入力元=1Scanner」を守ると、トラブルが激減します。
標準入力(キーボード入力)の基本

next / nextLine の違い
Scannerで最も重要なのがこの2つです。
| メソッド | 読み取る範囲 |
|---|---|
| next() | 次のトークン(空白まで) |
| nextLine() | 行全体(改行まで) |
空白を含む入力を扱うなら、nextLine()が基本です。
入力待ちの仕組みとUI設計
Scannerの読み取りは、ユーザーがEnterを押すまで待機します。
止まって見えるときは、入力待ちである可能性が高いです。
このようにプロンプトを表示すると、操作ミスが減ります。
数値・真偽値の読み取りと安全な入力チェック
nextInt / nextDouble の注意点
便利ですが、文字が入力されると即例外になります。
安全に書くなら、必ず事前チェックを行います。
hasNext系メソッドで壊れない入力処理
Scannerには以下の判定メソッドがあります。
hasNextInt()hasNextDouble()hasNextLine()
例外に頼らず制御できるため、対話式プログラムでは必須です。
例外処理と入力エラー対策

InputMismatchExceptionの正体
nextInt()で文字が入力されると、
InputMismatchExceptionが発生- 不正トークンは消費されない
つまり、同じ例外が永遠に出続ける状態になります。
無限ループを防ぐ設計
必ず以下のどちらかを行います。
next()で不正トークンを捨てるnextLine()で行ごと捨てる
入力エラー時の回復設計が、プログラムの安定性を決めます。
Scannerのリソース管理とcloseの考え方
close()が必要な理由
Scannerは内部でリソースを保持します。
- ファイルハンドル
- ストリーム
閉じ忘れると、リソース枯渇の原因になります。
try-with-resourcesの実践
例外が起きても自動でcloseされるため、安全です。
よくある落とし穴:nextIntの後にnextLineが空になる

原因(改行の読み残し)
nextInt()は数値のみ消費- 改行は残る
- 次の
nextLine()が空文字を読む
正しい解決方法
方法①:ダミーで改行を消費
方法②:nextLineに統一(推奨)
ファイル読み込みにScannerを使う
ファイル入力の基本コード
CSVや区切り文字の扱い方
ただし、厳密なCSV処理には不向きです。
実務では専用ライブラリも検討します。
実務で使えるScanner実践コード例
標準入力の実践例
ファイル入力の実践例
Java Scannerまとめと次の学習ステップ

Scannerは、
- 標準入力とファイル入力を同一APIで扱える
- トークンと行の違いを理解すると安定する
- hasNext系と例外設計が重要
という特徴を持つ、Java学習の最重要クラスの1つです。
基礎構文を理解したら、
「実際に手を動かして書く経験」が成長を加速させます。
ここまで読んで、
「Scannerの仕組みは理解できたけど、実際にコードを書く環境を用意するのが少し面倒…」
と感じた方もいるかもしれません。
そんな方に向いているのが、
ブラウザ上ですぐにJavaを動かせる学習コンテンツ
「ZeroCodePlus」です。
ZeroCodePlusは、Progateのように
環境構築なし・インストール不要で、
画面の指示に従ってコードを書きながら学習を進められるのが特徴です。
エディタの準備や設定につまずくことなく、
「まず書いてみる」「動かして確かめる」
という学習サイクルを、ゲーム感覚で始められます。
Scannerの入力処理のように、
実際に動かさないと理解しづらい内容ほど、
こうしたブラウザ完結型の学習環境は相性が良いでしょう。
▶ ZeroCodePlusでJavaをブラウザ学習してみる
環境構築なしでブラウザ上からJavaを試せる
ZeroCodePlusのような学習環境を使うと、
理解 → 実践 → 定着のサイクルを素早く回せます。