logo

Javaでユーザーから入力を取得するには?

Java は、ユーザーがすべての Java 入出力操作を実行できるようにする I/O パッケージとともにさまざまなストリームを提供します。これらのストリームは、I/O 操作を完全に実行するために、あらゆる種類のオブジェクト、データ型、文字、ファイルなどをサポートします。 Java での入力には、記事内で後述する特定のメソッドを使用できます。

Linuxのgrepコマンド

Java で入力を取得するメソッド

がある ふたつのやり方 これにより、ユーザーまたはファイルから Java 入力を取得できます。



  • BufferedReader クラス
  • スキャナクラス

1. Java での文字列入力に BufferedReader クラスを使用する

これは、一連の文字を読み取るために使用される単純なクラスです。これには、文字を読み取る単純な関数 read、文字の配列を読み取る別の read、および行を読み取る readLine() 関数があります。

InputStreamReader() は、BufferedReader が期待するとおりに読み取れるように、バイトの入力ストリームを文字のストリームに変換する関数です。 文字の流れ。 BufferedReader はチェックされた例外をスローできます。

上記のアプローチの実装を以下に示します。



ジャワ
// Java Program for taking user // input using BufferedReader Class import java.io.*; class GFG {  // Main Method  public static void main(String[] args)  throws IOException  {  // Creating BufferedReader Object  // InputStreamReader converts bytes to  // stream of character  BufferedReader bfn = new BufferedReader(  new InputStreamReader(System.in));  // String reading internally  String str = bfn.readLine();  // Integer reading internally  int it = Integer.parseInt(bfn.readLine());  // Printing String  System.out.println('Entered String : ' + str);  // Printing Integer  System.out.println('Entered Integer : ' + it);  } }>

出力

Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>

バッファ リーダー クラスを使用して入力を読み取る

上記のアプローチの実装を以下に示します。

ジャワ
/*package whatever //do not write package name here */ import java.io.*; import java.io.BufferedReader; import java.io.InputStreamReader; class Easy {  public static void main(String[] args)  {  // creating the instance of class BufferedReader  BufferedReader reader = new BufferedReader(  new InputStreamReader(System.in));  String name;  try {  System.out.println('Enter your name');  name = reader.readLine(); // taking string input  System.out.println('Name=' + name);  }  catch (Exception e) {  }  } }>

出力:



bash 文字列の長さ
Enter your name: Geeks Name=Geeks>

2. Java で入力を取得するためのスキャナ クラスの使用

これは、Java の後のバージョンで追加された BufferedReader の高度なバージョンです。スキャナはフォーマットされた入力を読み取ることができます。さまざまなデータ型に応じてさまざまな関数があります。

ラキ・サワント
  • スキャナーによってスローされる例外がないため、スローを記述する必要がないため、スキャナーは非常に読みやすくなります。
  • Java の後のバージョンで追加されました
  • これには、整数、文字、その他のデータ型を読み取るための事前定義された関数が含まれています。

Scannerクラスの構文

Scanner scn = new Scanner(System.in);>

スキャナクラスのインポート

' Scanner を使用するには、util パッケージから Scanner クラスを次のようにインポートする必要があります。

import java.util.Scanner;>

内蔵スキャナ機能は次のとおりです。

  • 整数: nextInt()
  • 浮く: nextFloat()
  • 弦 : next() と nextLine()

したがって、Scanner の整数と文字列の場合、BufferedReader で必要だった解析は必要ありません。

ジャワ
// Java Program to show how to take // input from user using Scanner Class import java.util.*; class GFG {  public static void main(String[] args)  {  // Scanner definition  Scanner scn = new Scanner(System.in);  // input is a string ( one word )  // read by next() function  String str1 = scn.next();  // print String  System.out.println('Entered String str1 : ' + str1);  // input is a String ( complete Sentence )  // read by nextLine()function  String str2 = scn.nextLine();  // print string  System.out.println('Entered String str2 : ' + str2);  // input is an Integer  // read by nextInt() function  int x = scn.nextInt();  // print integer  System.out.println('Entered Integer : ' + x);  // input is a floatingValue  // read by nextFloat() function  float f = scn.nextFloat();  // print floating value  System.out.println('Entered FloatValue : ' + f);  } }>

出力:

Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>

例 2:

ジャワ
// Java Program to implement // Scanner Class to take input import java.io.*; import java.util.Scanner; // Driver Class class Easy {  // main function  public static void main(String[] args)  {  // creating the instance of class Scanner  Scanner obj = new Scanner(System.in);  String name;  int rollno;  float marks;  System.out.println('Enter your name');  // taking string input  name = obj.nextLine();  System.out.println('Enter your rollno');  // taking integer input  rollno = obj.nextInt();  System.out.println('Enter your marks');  // taking float input  marks = obj.nextFloat();    // printing the output  System.out.println('Name=' + name);  System.out.println('Rollno=' + rollno);  System.out.println('Marks=' + marks);  } }>

出力

Enter your name Geeks  Enter your rollno 5 Enter your marks 84.60 Name=Geeks  Rollno=5 Marks=84.60>

BufferedReader と Scanner の違い

  • BufferedReader は、文字のストリームを読み取るために一般に使用される入力を読み取るための非常に基本的な方法です。 Scanner は入力を解析するために多くの後処理を行うため、Scanner よりも高速であるため、Scanner よりも優れています。 nextInt()、nextFloat() に見られるように
  • BufferedReader は、読み込むストリーム入力のサイズを指定できるため、より柔軟です。 (一般に、BufferedReader は Scanner よりも大きな入力を読み取ります)
  • これら 2 つの要素は、より大きな入力を読み取るときに作用します。一般に、Scanner クラスが入力を処理します。
  • BufferedReader は同期されるため推奨されます。複数のスレッドを処理する場合は、これが推奨されます。
  • 適切な入力と読みやすさを実現します。 Scanner は BufferedReader よりも優先されます。