【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クラスを使わないもう一つの方法として、InputStreamReaderとBufferedReaderを組み合わせて入力を読み取る例を紹介します。読み取った文字列は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の組み合わせが有効です。それぞれの特徴を理解し、目的に応じて使い分けましょう。
-
【Java入門】ファイルの内容を読み込んで文字列に変換する方法
Javaでは、ファイルの内容を読み取る方法がいくつかあります。そのひとつが、java.util.Scannerクラスを使ってファイルの内容を文字列として読み込む方法です。この記事では、Scannerクラスを利用してテキストファイル全体を1つの文字列として取得する手順を解説します。 Scannerクラスを使った基本の手順 Scannerクラスをインスタンス化します。コンストラクタの引数には、読み込みたいファイルのパスを指定します。 空の文字列バッファ(StringBuffer)を作成します。 whileループの条件にhasNextLine()を指定し、「次の行が存在する間」繰り返し処理を行うよ
-
Javaで文字列から数値を抽出する方法|replaceAll()メソッドの使い方
java.lang.Stringクラスには、文字列を扱うための便利なメソッドが多数用意されています。これらのメソッドを活用することで、トリム(余分な空白の除去)、連結、変換、比較といったさまざまな文字列操作が可能になります。 文字列から数値だけを取り出したい場合は、StringクラスのreplaceAll()メソッドを使うのが最も手軽です。正規表現「[^0-9]」(0〜9以外のすべての文字に一致)を空文字列に置き換えることで、数字以外の文字を一括して削除できます。 サンプルコード import java.util.Scanner; public class StringExtractTest