カテゴリ: Java 更新日: 2026/04/09

JavaのScannerクラスとIOExceptionの使い方を完全解説!初心者でもわかる例外処理と入力処理の基本

ScannerのioExceptionメソッド
ScannerのioExceptionメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでキーボードから文字列を入力してみたいんですが、エラーが出て困っています…」

先生

「入力処理にはScannerクラスを使うと便利です。でも、入力やファイル操作のときにはIOExceptionという例外も意識する必要がありますよ。」

生徒

「IOExceptionって何ですか?どうして使う必要があるんですか?」

先生

「では、ScannerクラスとIOExceptionの基本を、実際の使い方と一緒に解説していきましょう。」

1. Scannerクラスとは何か

「1. Scannerクラスとは何か」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. Scannerクラスとは何か
1. Scannerクラスとは何か

JavaのScannerクラスは、ユーザーからのキーボード入力を受け取るために使われる標準的なクラスです。文字列、整数、小数など、さまざまな形式のデータを簡単に入力できるため、Java初心者には欠かせない存在です。

Scannerはjava.utilパッケージに含まれているため、使用するにはimport文を記述する必要があります。基本的には、System.inを引数として渡して使用します。

2. IOExceptionとは何か

2. IOExceptionとは何か
2. IOExceptionとは何か

IOExceptionは、Javaでファイルの読み書きや標準入力などの「入出力処理」を行う際に発生する可能性のある例外(エラー)の一種です。特に、BufferedReaderFileReaderなど、ファイルを扱うクラスを使う場合に頻出します。

Scannerクラス自体ではIOExceptionを直接スローしませんが、例外処理の基本としてIOExceptionの知識は非常に重要です。標準入力やファイル操作では、予期せぬ問題に備えて例外処理を組み込む必要があります。

3. Javaの例外処理でIOExceptionを扱う理由

3. Javaの例外処理でIOExceptionを扱う理由
3. Javaの例外処理でIOExceptionを扱う理由

Javaでは、安全なプログラムを書くために、発生する可能性のあるエラーを事前に捕まえる「例外処理」を行います。その中でもIOExceptionは、外部とのやり取りに関係する処理で発生しやすい例外です。

たとえば、存在しないファイルを読み込もうとした場合や、標準入力に問題があった場合にはIOExceptionが発生することがあります。これらに備えて、try-catch構文を使ってエラーを処理するのが一般的です。

4. ScannerクラスとIOExceptionの関係

「4. ScannerクラスとIOExceptionの関係」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. ScannerクラスとIOExceptionの関係
4. ScannerクラスとIOExceptionの関係

基本的にScannerクラスを使って標準入力(System.in)を行うときには、IOExceptionを直接処理する必要はありません。しかし、ファイルから入力を受け取るScannerの使い方をすると、IOExceptionが発生する可能性があるため、catchブロックでの例外処理が求められます。

そのため、Scannerをより広く使いこなしたい場合は、IOExceptionの仕組みや使い方を理解しておくことが大切です。

5. ファイル入力でScannerとIOExceptionを使う例

5. ファイル入力でScannerとIOExceptionを使う例
5. ファイル入力でScannerとIOExceptionを使う例

次の例では、ファイルから文字列を読み込むためにScannerクラスを使用し、IOExceptionが発生する可能性を考慮したコードを書いています。


import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class ReadFileExample {
    public static void main(String[] args) {
        try {
            File file = new File("sample.txt");
            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);
            }

            scanner.close();
        } catch (IOException e) {
            System.out.println("ファイルの読み込み中にエラーが発生しました。");
        }
    }
}

このように、Scannerをファイル読み込みで使用する場合には、IOExceptionをcatchして、エラー時の対処ができるようにしておくことが大切です。

6. IOExceptionが発生する代表的なケース

6. IOExceptionが発生する代表的なケース
6. IOExceptionが発生する代表的なケース

JavaでIOExceptionが発生する代表的なパターンをいくつか紹介します。

  • 存在しないファイルを読み込もうとしたとき
  • 読み取り中にファイルが削除されたとき
  • ネットワーク経由のデータ受信中に接続が切れたとき
  • 標準入力(System.in)に異常があったとき

これらはすべて入出力に関係する処理であり、事前にtry-catch文で例外を処理することで、プログラムの停止を防ぎ、ユーザーに対して適切なエラーメッセージを表示することができます。

7. IOExceptionを上手に扱うポイント

「7. IOExceptionを上手に扱うポイント」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. IOExceptionを上手に扱うポイント
7. IOExceptionを上手に扱うポイント

IOExceptionを扱う際に大切なポイントは、「エラーが起こる可能性を考えて安全に処理する」という姿勢です。特にファイル操作やネットワーク通信など、外部とやりとりするプログラムでは、必ず例外処理を追加しましょう。

try-catch構文を使うことで、プログラムが途中で止まらず、ユーザーに親切な対応ができるようになります。また、IOExceptionが発生したときにログを出力する、再試行するなど、柔軟な対処も可能になります。

8. Java初心者にとってのIOExceptionとScannerの学び方

8. Java初心者にとってのIOExceptionとScannerの学び方
8. Java初心者にとってのIOExceptionとScannerの学び方

Java初心者がIOExceptionScannerを学ぶときは、まず標準入力での使い方から始めると良いでしょう。文字列入力や数値入力が問題なくできるようになったら、次にファイル操作と例外処理に進むのがおすすめです。

実際にファイルを作成して読み込む練習をしたり、意図的にファイルを消してエラーを発生させてみたりすることで、IOExceptionの動きが体感できます。

Javaの入出力処理や例外処理は実践的なプログラムに必須の要素なので、ScannerとIOExceptionの基礎はしっかりと理解しておきましょう。

9.まとめ

9.まとめ
9.まとめ

この記事では、Javaプログラミング初心者が知っておくべきScannerクラスとIOExceptionの基本的な使い方とその重要性について解説しました。Scannerクラスは、標準入力やファイルから文字列や数値を簡単に取得できる便利なJavaのユーティリティクラスであり、Javaの文字列入力処理の基本として非常に重要です。

特に、ユーザーが入力した文字列をそのまま読み取る方法としてnextLineなどのメソッドとともに使用され、Javaのコンソールアプリケーションや標準入力処理において非常によく登場します。Java初心者がまず最初に触れる入力処理は、このScannerクラスを使ったパターンが主流です。

一方で、IOExceptionはJavaで例外処理(エラー処理)を行う際に避けて通れないクラスです。ファイルを読み込むときやネットワーク接続、または標準入力の不具合などが発生したとき、プログラムの異常終了を防ぐために使用されます。try-catch構文と組み合わせることで、Javaプログラムの安全性や信頼性を高めることができます。

下記に、Scannerクラスでファイルを読み込み、IOExceptionを処理するJavaプログラムの実践的な例を改めて示します。


import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class FileReadPractice {
    public static void main(String[] args) {
        try {
            File file = new File("input.txt");
            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println("読み込み結果:" + line);
            }

            scanner.close();
        } catch (IOException e) {
            System.out.println("ファイルの読み込みに失敗しました。ファイルが存在するか確認してください。");
        }
    }
}

Javaでプログラムを書くうえで、ユーザーとのやり取りを行う際に必須となるのがScannerクラスです。そして、現実のプログラムでは必ずしもすべてが予定通り動作するとは限りません。だからこそ、IOExceptionを含む例外処理の考え方とコードの書き方を早いうちに身につけておくことが、今後の成長に繋がります。

さらに、Javaのエラー処理を正しく学んでおくことで、後々ServletやSpring Bootなどのフレームワークを使った大規模なアプリケーション開発でも役立ちます。例外処理の基礎は、プロのエンジニアとして成長するための土台となる知識です。

Java初心者の方は、ScannerIOExceptionという基礎的なクラスをしっかり学び、プログラムの入力処理と例外処理の両方に慣れておくことをおすすめします。特にファイルを扱う場合には、どのようなときにIOExceptionが発生するのか、そしてその時にプログラムをどのように守るかという視点を持ってコーディングする習慣が重要です。

このように、今回学んだ内容はJavaの実用的なスキルに直結します。毎日の練習に取り入れて、理解を深めていきましょう。

先生と生徒の振り返り会話

生徒

「Scannerクラスを使えば、ユーザーからの入力がとても簡単にできるんですね!」

先生

「そうですね。特に文字列や数値の入力を受け取るときには、Scannerクラスが最も手軽な方法です。」

生徒

「でも、ファイルから読み込むときはIOExceptionに気をつけないといけないんですね。」

先生

「はい、ファイル操作は予期せぬエラーが起こることもあるので、IOExceptionを使ってきちんと例外処理をすることが大切です。」

生徒

「例外処理の考え方が少しずつ分かってきました。実際にファイルを作って試してみます!」

先生

「それが一番の学びになりますよ。ぜひエラーを自分で出して、対処法を身につけていきましょう!」

この記事を読んだ人からの質問

「この記事を読んだ人からの質問」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのScannerクラスは何のために使うのですか?

Scannerクラスは、Javaで文字列や数値などをユーザーからキーボード入力として受け取るために使われる便利なクラスです。標準入力処理を簡単に実装できるため、Java初心者にも使いやすく、基本的な入力処理には欠かせません。

Scannerクラスを使うにはimportが必要ですか?

はい、Scannerクラスはjava.utilパッケージに含まれているため、使用するにはimport文で明示的に読み込む必要があります。Javaの標準入力機能を使う際には忘れずにimport文を書きましょう。

IOExceptionとは何ですか?Javaでどうして使うのですか?

IOExceptionは、Javaでファイルの読み書きや標準入力などの入出力処理に失敗したときに発生する例外です。Javaの例外処理では、予期しないエラーをtry-catchで処理することが推奨されており、その際によく使われるのがIOExceptionです。

ScannerクラスとIOExceptionの関係はありますか?

Scannerクラスで標準入力を使う場合はIOExceptionを意識する必要はありませんが、ファイルから入力を受け取る場合はIOExceptionが発生する可能性があるため、try-catch構文での例外処理が必要になります。

JavaでScannerを使ってファイルを読み込むときに気をつけることは?

JavaでScannerクラスを使ってファイルを読み込む場合、ファイルが存在しないとIOExceptionが発生します。そのため、ファイル操作では必ずtry-catch構文を使って、例外処理を行うようにしましょう。

IOExceptionが発生する具体的な例はどんな場合ですか?

存在しないファイルを読み込もうとした場合、読み取り中にファイルが削除された場合、ネットワーク接続が突然切れた場合、または標準入力に異常が発生した場合など、Javaの入出力処理に関係する場面でIOExceptionが発生します。

IOExceptionが出たときにJavaプログラムを止めずに処理を続けるには?

IOExceptionが発生してもJavaプログラムを止めずに処理を続けるには、try-catch構文で例外を捕まえて適切なメッセージを表示するなどの例外処理を行う必要があります。これにより、ユーザーにエラー内容を伝えながらプログラムを継続できます。

Java初心者がIOExceptionとScannerを学ぶときの順番は?

Java初心者はまずScannerクラスを使って標準入力の文字列や数値を扱うことから始めると良いでしょう。その後、ファイル入力や例外処理に進み、IOExceptionの使い方や対処法を学ぶのが効果的です。

Javaの例外処理でIOException以外に気をつけるべき点は?

IOException以外にも、NullPointerExceptionやArrayIndexOutOfBoundsExceptionなど、Javaではさまざまな例外が発生する可能性があります。まずはIOExceptionの基本を理解し、段階的に他の例外も学習していくのが安全な開発につながります。

ScannerでnextLineを使うときにエラーが出るのはなぜ?

nextLineの前にnextIntやnextDoubleを使っていると、改行コードがScannerに残ってしまい、次のnextLineが空文字を読み取ってしまうことがあります。この現象を防ぐにはnextLineを一度余分に使って改行を消す対処が必要です。

Javaのファイル読み込みでIOExceptionを処理しないとどうなりますか?

Javaでファイルを読み込む際にIOExceptionを処理しないと、エラーが発生したときにプログラムが強制終了してしまいます。ユーザーにエラー原因が伝わらず、不親切な動作になるため、例外処理は必ず入れるべきです。
カテゴリの一覧へ
新着記事
New1
Java
JavaのBufferedOutputStreamクラスの使い方を完全ガイド!初心者でもわかる効率的なファイル書き込み
更新記事
New2
Java
Javaのsealedクラス(シール・クラス)とは?継承を制御する新機能をやさしく解説
更新記事
New3
Spring
JavaのSpringで使う@Pastアノテーションを徹底解説!初心者向け日付バリデーション入門
更新記事
New4
Java
JavaのLocalDate.withメソッドの使い方を完全ガイド!初心者でもわかる日付の変更方法
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.3
Java&Spring記事人気No3
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.6
Java&Spring記事人気No6
Java
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.7
Java&Spring記事人気No7
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.8
Java&Spring記事人気No8
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本