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

【Java入門】ユーザーからの入力を取得する方法|ScannerとBufferedReaderの使い方

はじめに

この記事では、Javaでユーザー(キーボード)からの入力を取得する方法を解説します。ユーザー入力の読み取りには、主にjava.util.Scannerクラスを使用します。

Scannerクラスには、目的に応じてさまざまなメソッドが用意されています。たとえばnextInt()メソッドは、入力の次のトークンをint型(整数)として読み取ります。引数を指定せずにnextInt()を呼び出した場合、Scannerオブジェクトが持つデフォルトの基数(radix)を使ってnextInt(radix)を呼び出したときとまったく同じ動作になります。また、1行分の文字列を読み取りたい場合はnextLine()メソッドを使用します。

それでは、実際のコード例を見ていきましょう。

処理の流れ(アルゴリズム)

今回作成するプログラムは、以下の手順で動作します。

Step 1: 処理を開始する
Step 2: 文字列型の変数 value を宣言する
Step 3: ユーザーに文字列の入力を促すメッセージを表示する
Step 4: 入力された値を読み取る
Step 5: 読み取った値を画面に表示する
Step 6: 処理を終了する

例1: Scannerクラスで文字列を入力する

まずは最も一般的な方法です。プロンプトに従ってユーザーが入力した文字列を、ScannerクラスのnextLine()メソッドで読み取ります。

import java.util.Scanner;
public class PrintString {
   public static void main(String[] args) {
      String value;
      Scanner scanner = new Scanner(System.in);
      System.out.println("Readerオブジェクトを定義しました");
      System.out.print("文字列を入力してください: ");
      value = scanner.nextLine();
      System.out.println("nextLineメソッドで文字列を読み込みました");
      System.out.println("入力された文字列は:");
      System.out.println(value);
   }
}

実行結果

Readerオブジェクトを定義しました
文字列を入力してください: おはようございます!
nextLineメソッドで文字列を読み込みました
入力された文字列は:
おはようございます!

キーボードから入力した「おはようございます!」という文字列がそのまま読み取られ、画面に出力されていることが確認できます。

例2: InputStreamReaderとBufferedReaderで数値を入力する

続いて、Scannerクラスを使わないもう一つの方法として、InputStreamReaderBufferedReaderを組み合わせて入力を読み取る例を紹介します。読み取った文字列はInteger.parseInt()メソッドでint型の数値に変換しています。

import java.io.*;
public class ReadNum {
   public static void main(String args[]) throws IOException {
      InputStreamReader read = new InputStreamReader(System.in);
      System.out.println("InputStreamReaderクラスのオブジェクトを作成しました");
      BufferedReader in = new BufferedReader(read);
      System.out.println("BufferedReaderクラスのコンストラクタを生成しました");
      System.out.print("数値を入力してください: ");
      int number = Integer.parseInt(in.readLine());
   }
}

実行結果

InputStreamReaderクラスのオブジェクトを作成しました
BufferedReaderクラスのコンストラクタを生成しました
数値を入力してください: 34

この例では、標準入力(System.in)をInputStreamReaderでバイトストリームから文字ストリームへ変換し、さらにBufferedReaderでラップすることで、1行単位で効率よく入力を読み取れるようにしています。

まとめ

Javaでユーザー入力を取得するなら、手軽で直感的に使えるScannerクラスがおすすめです。一方、大量のテキストを効率的に処理したい場合や、より細かい入力制御が必要なケースでは、InputStreamReaderとBufferedReaderの組み合わせが有効です。それぞれの特徴を理解し、目的に応じて使い分けましょう。

  1. 【Java入門】ファイルの内容を読み込んで文字列に変換する方法

    Javaでは、ファイルの内容を読み取る方法がいくつかあります。そのひとつが、java.util.Scannerクラスを使ってファイルの内容を文字列として読み込む方法です。この記事では、Scannerクラスを利用してテキストファイル全体を1つの文字列として取得する手順を解説します。 Scannerクラスを使った基本の手順 Scannerクラスをインスタンス化します。コンストラクタの引数には、読み込みたいファイルのパスを指定します。 空の文字列バッファ(StringBuffer)を作成します。 whileループの条件にhasNextLine()を指定し、「次の行が存在する間」繰り返し処理を行うよ

  2. Javaで文字列から数値を抽出する方法|replaceAll()メソッドの使い方

    java.lang.Stringクラスには、文字列を扱うための便利なメソッドが多数用意されています。これらのメソッドを活用することで、トリム(余分な空白の除去)、連結、変換、比較といったさまざまな文字列操作が可能になります。 文字列から数値だけを取り出したい場合は、StringクラスのreplaceAll()メソッドを使うのが最も手軽です。正規表現「[^0-9]」(0〜9以外のすべての文字に一致)を空文字列に置き換えることで、数字以外の文字を一括して削除できます。 サンプルコード import java.util.Scanner; public class StringExtractTest