Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでコンソールから入力を読み取る方法【ScannerとBufferedReaderの使い方】


Javaでは、標準入力(コンソール)からデータを読み取るための方法がいくつか用意されています。この記事では、代表的な2つの手法——「Scannerクラス」と「BufferedReaderクラス」——を使った入力の読み取り方を、サンプルコードと実行結果とともにわかりやすく解説します。

Scannerクラスを使った入力の読み取り

まずは、最も手軽で広く使われているScannerクラスの例から見ていきましょう。

サンプルコード

import java.util.Scanner;
public class Demo{
    public static void main(String args[]){
        Scanner my_scan = new Scanner(System.in);
        String my_str = my_scan.nextLine();
        System.out.println("The string is "+my_str);
        int my_val = my_scan.nextInt();
        System.out.println("The integer is "+my_val);
        float my_float = my_scan.nextFloat();
        System.out.println("The float value is "+my_float);
    }
}

実行結果

The string is Joe
The integer is 56
The float value is 78.99

Demoというクラスの中にmainメソッドが定義されています。まず、System.in(標準入力)を引数としてScannerクラスのインスタンスmy_scanを生成します。その後、以下のメソッドを使って各種データを読み取っています。

  • nextLine():文字列を1行単位で読み取る
  • nextInt():整数値(int型)を読み取る
  • nextFloat():浮動小数点数(float型)を読み取る

読み取った値は、System.out.println()によってコンソールに出力されます。Scannerを使えば、文字列・整数・小数など、さまざまな型のデータを直感的に取得できるのが大きな魅力です。

BufferedReaderクラスを使った入力の読み取り

次に、BufferedReaderクラスを利用した方法を紹介します。こちらは内部でバッファリングを行うため、効率的に読み取り処理ができるのが特徴です。

サンプルコード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo{
    public static void main(String[] args) throws IOException{
        BufferedReader my_reader = new BufferedReader(new InputStreamReader(System.in));
        String my_name = my_reader.readLine();
        System.out.println("The name is ");
        System.out.println(my_name);
    }
}

実行結果

The name is
Joe

ここでもDemoクラスのmainメソッド内で処理を行います。まず、InputStreamReaderでSystem.inをラップし、さらにそれをBufferedReaderで包むことでインスタンスmy_readerを作成します。

readLine()メソッドを呼び出すことで、標準入力から文字列を1行読み込むことができます。なお、BufferedReaderのreadLine()はIOExceptionをスローする可能性があるため、mainメソッドの宣言にthrows IOExceptionを付けておく必要があります。読み込んだ文字列は、コンソールに出力して確認できます。

ScannerとBufferedReaderの使い分けのポイント

  • Scanner:nextLine()やnextInt()など多彩なメソッドが用意されており、初心者でも扱いやすい。少量データの読み取りに適しています。
  • BufferedReader:バッファリングにより高速な読み取りが可能で、大量のテキストを扱う場合に有利です。ただし、読み取れるのは文字列のみのため、数値として使う場合はInteger.parseInt()などでの型変換が必要になります。

扱うデータの種類や量に応じて、適切なクラスを選択するとよいでしょう。


  1. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー

  2. 【Java】JTextFieldの入力値を読み取ってJListに追加する方法を解説

    JListとは JListはJComponentクラスのサブクラスで、ユーザーが単一選択または複数選択を行えるSwingのリストコンポーネントです。ただし、JListクラス自体にはスクロールバーの機能が備わっていないため、スクロールバーを表示したい場合はJScrollPaneクラスと組み合わせて使用します。JScrollPaneでJListをラップすれば、スクロールバーは自動的に管理されます。 DefaultListModelで項目を管理する DefaultListModelクラスは、リストモデルのシンプルな実装を提供しており、JListに表示される項目を管理するために利用できます。Defa