Javaでコンソールからユーザーの入力を読み取る3つの方法
この記事では。 この記事では、コマンドライン環境(「コンソール」としても知られています)でユーザーからの入力を読み取るための3つの異なる方法について説明します。 それぞれの方法は、かなり簡単に使用することができ、また、それぞれの利点と欠点があります。
BufferedReaderクラスを使用してユーザーの入力を読み取る
System.in(標準入力ストリーム)をBufferedReaderでラップされたInputStreamReaderでラップすることにより、コマンドラインでユーザーからの入力を読み取ることができます。 以下はその例です。
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);
上記の例では、readLine()メソッドがコマンドラインからテキストの行を読み込んでいます。 利点:入力がバッファリングされるので、効率的に読み取ることができます。 欠点:ラッピングコードを覚えるのが大変。
Scannerクラスを使用したユーザーの入力の読み取り
Scannerクラス(Java 1.5以降で利用可能)の主な目的は、正規表現を使用してプリミティブ型や文字列を解析することですが、コマンドラインのユーザーからの入力を読み取るためにも使用することができます。 以下はその例です:
Scanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();
利点:
- トークン化された入力からプリミティブ型 (nextInt()、nextFloat()、…) を解析する便利なメソッド。
- トークンの検索に正規表現を使用できる。
欠点:
- 読み取り方法が同期されていない。
詳しくはこちらをご覧ください。 Java Scanner Tutorial and Code Examples
Reading User’s Input using Console class
Consoleクラスは、Java 1.6で導入され、コマンドラインからユーザーの入力を読み取るための好ましい方法となっています。 さらに、ユーザーが入力した文字をエコーせずに、パスワードのような入力を読み取るためにも使用できます。また、フォーマット文字列の構文を使用することもできます (System.out.printf() のように)。 以下にコード例を示します:
Console console = System.console();if (console == null) {System.out.println("No console: non-interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();String passport = console.readLine("Enter your %d (th) passport number: ", 2);
利点:
- 入力された文字をエコーせずにパスワードを読み取ることができる。
- フォーマット文字列構文を使用できる。
欠点:
- 非インタラクティブ環境(IDEなど)では動作しない。
詳しくはこちらをご覧ください。 Java Console Input Output Examples
Java Reading User’s Input Example Program
便利で参考になるように、上記のコードスニペットを組み合わせて、次のようなソースコードのデモプログラムを作成しました:
package net.codejava.io;import java.io.*;import java.util.*;public class UserInputConsoleDemo {public static void main(String args) {// using InputStreamReadertry {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);} catch (IOException ioe) {ioe.printStackTrace();}// using ScannerScanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.println("Your nationality is: " + nationality);// using ConsoleConsole console = System.console();if (console == null) {System.out.println("No console: not in interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();System.out.println("Thank you!");System.out.println("Your username is: " + username);System.out.println("Your password is: " + String.valueOf(password));// using Console with formatted promptString job = console.readLine("Enter your job: ");String passport = console.readLine("Enter your %d (th) passport number: ", 2);System.out.println("Your job is: " + job);System.out.println("Your passport number is: " + passport);}}
ビデオを見る。
- Console class Javadoc
- I/O from the Command Line – The Java Tutorials
- Scanner class Javadoc
- BufferedReader class Javadoc
Related Tutorials:
- Java Console Input Output Examples
- Java Scanner Tutorial and Code Examples
Other Java File IO Tutorials:
- How to Read and Write Text File in Java
- How to Read and Write Binary Files in Java
- Java IO -。 一般的なファイルとディレクトリ操作の例
- Javaのシリアライズの基本的な例
- Javaの外部化を例で理解する
- JavaでZIP形式のファイルを圧縮する方法
- JavaでZIPファイルを抽出する方法
著者について。
Nam Ha Minh氏は、認定Javaプログラマー(SCJPおよびSCWCD)です。 彼がJavaでプログラミングを始めたのはJava 1.4の頃で、それ以来Javaが好きになりました。 彼とはFacebookで友達になり、YouTubeで彼のJavaビデオを見ることができます。