java scanner class tutorial with examples
このチュートリアルでは、Javaのスキャナークラスをインポートして使用する方法と、そのさまざまなメソッド、スキャナーAPI、および例について説明します。
標準のI / Oデバイスへのデータの読み取り/書き込みにJavaが使用する標準の入出力メソッドについてはすでに説明しました。
Javaは、ユーザー入力を読み取るためのさらに別のメカニズムを提供します。これはScannerクラスです。あまり効率的ではありませんが、Scannerクラスは、Javaプログラムの入力を読み取るための最も簡単で好ましい方法です。
=> ここですべてのJavaチュートリアルを確認してください。
学習内容:
Javaスキャナークラス:詳細な外観
Scannerクラスは主に、入力をスキャンし、int、decimal、doubleなどのプリミティブ(組み込み)データ型の入力を読み取るために使用されます。Scannerクラスは基本的に、何らかの区切りパターンに基づいてトークン化された入力を返します。したがって、一般に、タイプdtを読み取りたい場合は、関数nextdt()を使用して入力を読み取ることができます。
Scannerクラスは、イテレータ(文字列)、Closeable、およびAutoCloseableインターフェイスを実装します。
このScannerクラスの詳細を見てみましょう。
スキャナーのインポート
Scannerクラスは、「java.util」パッケージに属しています。したがって、プログラムでScannerクラスを使用するには、次のようにこのパッケージをインポートする必要があります。
java.utilをインポートします。*
または
java.util.Scannerをインポートします。
上記のステートメントのいずれかにより、Scannerクラスとその機能がプログラムにインポートされます。
Javaスキャナークラス
ScannerクラスがJavaプログラムにインポートされると、それを使用してさまざまなデータ型の入力を読み取ることができます。標準入力、ファイル、またはチャネルから入力を読み取るかどうかに応じて、適切な定義済みオブジェクトをScannerオブジェクトに渡すことができます。
以下に、スキャナークラスの基本的な使用例を示します。
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
出力:
上記のプログラムでは、Scannerクラスオブジェクトを作成する際に、オブジェクトとして「System.in」(標準入力)を提供しました。次に、標準入力から文字列入力を読み取ります。
スキャナーAPI(コンストラクターとメソッド)
このセクションでは、ScannerクラスAPIについて詳しく説明します。 Scannerクラスには、System.in、ファイル入力、パスなどのさまざまな入力メソッドに対応するために、さまざまなオーバーロードされたコンストラクターが含まれています。
次の表に、各Scannerクラスコンストラクターのプロトタイプと説明を示します。
javaはオブジェクトの配列を作成します
番号 | プロトタイプ | 説明 |
---|---|---|
7 | Scanner(パスソース、文字列charsetName) | このコンストラクターは、指定されたファイルをスキャンして値を生成する新しいスキャナーを構築します |
1 | スキャナー(InputStreamソース) | このコンストラクターは、新しいInputStream、ソースをスキャンして値を生成する新しいスキャナーを構築します |
二 | Scanner(InputStream source、String charsetName) | このコンストラクターは、新しいInputStream、ソースをスキャンして値を生成する新しいスキャナーを構築します |
3 | スキャナー(ファイルソース) | このコンストラクターは、指定されたファイルをスキャンして値を生成する新しいスキャナーを構築します |
4 | Scanner(ファイルソース、文字列charsetName) | このコンストラクターは、指定されたファイルをスキャンして値を生成する新しいスキャナーを構築します |
5 | スキャナー(文字列ソース) | このコンストラクターは、指定された文字列をスキャンして値を生成する新しいスキャナーを構築します |
6 | スキャナー(パスソース) | このコンストラクターは、指定されたファイルをスキャンして値を生成する新しいスキャナーを構築します |
8 | スキャナー(読み取り可能なソース) | このコンストラクターは、指定されたソースをスキャンして値を生成する新しいスキャナーを構築します |
9 | スキャナー(ReadableByteChannelソース) | このコンストラクターは、指定されたチャネルをスキャンして値を生成する新しいスキャナーを構築します |
10 | Scanner(ReadableByteChannel source、String charsetName) | このコンストラクターは、指定されたチャネルをスキャンして値を生成する新しいスキャナーを構築します |
コンストラクターと同様に、Scannerクラスも、入力をスキャンして読み取るために使用される多数のメソッドを提供します。入力内の次のトークンが特定のデータ型のトークンであるかどうかを確認できるさまざまなブールメソッドを提供します。
コンストラクターごとに、事前定義された入力オブジェクトで1つの引数のみを指定するか、事前定義された入力オブジェクトと文字セットで構成される2つの引数を指定できることに注意してください。引数が1つの場合、デフォルトの文字セットが想定されます。
各データ型のトークンを取得するメソッドもあります。
他の方法には、ロケール、基数、パターンの一致、スキャナーのクローズなどを設定する方法が含まれます。
次の表に、基本的なスキャナーメソッドのそれぞれのプロトタイプと説明を示します。
番号 | プロトタイプ | 説明 |
---|---|---|
7 | ブール値hasNextFloat() | スキャナー入力の次のトークンがフロートタイプであるかどうかを確認します |
1 | ブールhasNext() | スキャナーの入力に別のトークンがある場合はtrueを返します |
二 | ブール値hasNextBigDecimal() | Scanner入力の次のトークンがbigDecimalタイプであるかどうかを確認します。 |
3 | ブール値hasNextBigInteger() | スキャナー入力の次のトークンがbigIntegerタイプであるかどうかを確認します |
4 | ブール値hasNextBoolean() | スキャナー入力の次のトークンがブール型であるかどうかを確認します |
5 | ブールhasNextByte() | スキャナー入力の次のトークンのタイプがバイトかどうかを確認します |
6 | ブール値hasNextDouble() | スキャナー入力の次のトークンがdouble型であるかどうかを確認します |
8 | ブールhasNextInt() | スキャナー入力の次のトークンが整数型であるかどうかを確認します |
9 | ブールhasNextLine() | スキャナー入力の次のトークンが別の行であるかどうかを確認します |
10 | ブールhasNextLong() | スキャナー入力の次のトークンが長いタイプであるかどうかを確認します |
十一 | ブール値hasNextShort() | スキャナー入力の次のトークンが短いタイプであるかどうかを確認します |
12 | 文字列next() | 入力をスキャンして次の完全なトークンを探します |
13 | BigDecimal nextBigDecimal() | 次のBigDecimalトークンの入力をスキャンします |
14 | BigInteger nextBigInteger() | 入力をスキャンして次のBigIntegerトークンを探します |
15 | ブールnextBoolean() | 入力をスキャンして次のブールトークンを探します |
16 | バイトnextByte() | 次のバイトトークンの入力をスキャンします |
17 | Double nextDouble() | 次のダブルトークンの入力をスキャンします |
18 | Float nextFloat() | 入力をスキャンして次のfloatトークンを探します |
19 | Int nextInt() | 入力をスキャンして次の整数トークンを探します |
20 | 文字列nextLine() | Scannerオブジェクトからスキップされた入力文字列を取得します |
21 | Long nextLong() | 入力をスキャンして次の長整数トークンを探します |
22 | 短いnextShort() | 入力をスキャンして次の短整数トークンを探します |
2. 3 | スキャナーreset() | 現在使用中のスキャナーをリセットする |
24 | スキャナーskip() | 区切り文字を無視し、指定されたパターンに一致する入力をスキップします |
25 | スキャナーuseDelimiter() | 区切りパターンを指定されたパターンに設定します |
26 | スキャナーuseLocale() | 指定されたロケールでScannersロケールオブジェクトを設定します |
27 | スキャナーuseRadix() | 指定した基数をスキャナーのデフォルトの基数として設定します |
28 | 整数基数() | 現在のスキャナーのデフォルトの基数を返します |
29 | void remove() | Iteratorが削除操作をサポートしていない場合に使用できます |
30 | ストリームtokens() | 現在のスキャナーから区切り文字で区切られたトークンのストリームを返します |
31 | 文字列toString() | 現在使用中の特定のスキャナーの戻り文字列表現 |
32 | IOException ioException() | Scannerオブジェクトの読み取り可能によって最後にスローされたIOExceptionを返します |
33 | findALL()をストリームします | 指定されたパターンに一致する一致結果のストリームを返します |
3. 4 | 文字列findInLine() | 指定された文字列からパターンの次の出現を見つけます。区切り文字を無視します |
35 | 文字列findWithinHorizon() | 指定された文字列からパターンの次の出現を見つけます。区切り文字を無視します |
36 | パターン区切り文字() | 現在のスキャナーで使用されているパターンを返します |
37 | ボイドclose() | スキャナーを閉じます |
38 | MatchResult match() | 最後のスキャン操作のマッチング結果を返します |
39 | ローカルローカル() | 現在のスキャナーのロケールを返します |
小切手 ここに スキャナーメソッドの詳細を知るため。
Javaでスキャナーを使用する方法は?
Scannerクラスによって提供されるさまざまなコンストラクターとメソッドを確認したので、JavaでScannerクラスを使用する方法を示すいくつかの例を実装しましょう。
次の実装は、System.inからの入力、つまり標準入力を読み取るためのScannerクラスの使用法を示しています。
ここでは、事前定義されたSystem.inオブジェクトを使用してScannerオブジェクトを作成します。次に、ユーザーは名前、クラス、およびパーセンテージを入力するように求められます。これらの詳細はすべて、Scannerクラスオブジェクトを使用して読み取られます。
さまざまなタイプの入力を読み取るためにScannerオブジェクトによって使用されるメソッドに注意してください。名前は文字列であるため、Scannerオブジェクトはnext()メソッドを使用します。クラス入力の場合はnextInt()を使用し、パーセンテージの場合はnextFloat()を使用します。
このようにして、読み取り中に入力を簡単に分離できます。
プログラムの出力には、入力されている入力と表示されている情報が表示されます。
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
出力:
スキャナー文字列
すでに述べたように、Scannerオブジェクトの作成中に、さまざまな定義済みオブジェクトを使用できます。つまり、標準入力、ファイル、さまざまなI / Oチャネルから、または文字列から入力を読み取ることができます。
文字列入力を使用する場合は、その中で正規表現を使用することもできます。
次の例は、Scannerが入力として文字列を使用するプログラムを示しています。次に、この入力がスキャンされ、各トークンを読み取ることによってトークンが分離されます。
読み取られたトークンは、出力に表示されます。
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
出力:
スキャナーを閉じる
Java Scannerクラスは、「Close()」メソッドを使用してScannerを閉じます。 Scannerクラスは、内部でCloseableインターフェイスも実装しているため、Scannerがまだ閉じられていない場合、基になるReadableインターフェイスはそのcloseメソッドを呼び出します。
使用が終了したら、Close()メソッドを使用してスキャナーを明示的に閉じることをお勧めします。
注意: Scannerオブジェクトが閉じられて検索が試行されると、「IllegalStateException」が発生します。
よくある質問
Q#1)JavaのScannerクラスとは何ですか?
回答: Scannerクラスは、Javaの「java.util」パッケージの一部であり、int、float、stringsなどのさまざまなプリミティブデータタイプの入力を読み取るために使用されます。
経験豊富なado.netインタビューの質問と回答
Q#2)Scannerクラスのnext()メソッドとnextLine()メソッドの違いは何ですか?
回答: next()メソッドは、スペースまで入力を読み取り、入力を読み取った後、カーソルを同じ行に置きます。ただし、メソッドnextLine()は、スペースを含む行の終わりまで入力の行全体を読み取ります。
Q#3)JavaのhasNext()とは何ですか?
回答: メソッドhasNext()は、Javaスキャナーメソッドの1つです。スキャナーの入力に別のトークンがある場合、このメソッドはtrueを返します。
Q#4)Scannerクラスを閉じる必要がありますか?
回答: Scannerクラスを閉じていないかのように閉じることをお勧めしますが、必須ではありません。Scannerクラスの基盤となるReadableインターフェイスが自動的に機能します。コンパイラが閉じられていない場合でも、コンパイラは警告を点滅させることがあります。
したがって、プログラミングの良い習慣として、常にスキャナーを閉じてください。
Q#5)Scannerクラスの「system.in」の目的は何ですか?
回答: Scannerクラスで「System.in」を使用することにより、Scannerが標準入力データに接続されたキーボードを読み取ることができるようになります。
結論
このチュートリアルでは、Scannerクラスと、APIと実装を含むそのすべての詳細を見てきました。スキャナークラスは、標準入力、ファイル、IOチャネル、正規表現の有無にかかわらず文字列など、さまざまなメディアから入力データを読み取るために使用されます。
スキャナーは入力を読み取るための非常に効率的な方法ではありませんが、最も簡単な方法の1つです。 Scannerを使用すると、int、float、stringsなどのさまざまなプリミティブデータ型の入力を読み取ることができます。Scannerクラスの入力オブジェクトとして文字列を使用する場合は、通常の式を使用することもできます。
Scannerクラスを使用すると、パターンまたは区切り文字を照合して入力を読み取ることもできます。
結論として、JavaでScannerクラスを使用することは、入力を読み取るための最も簡単で好ましい方法です。
=> ここで完璧なJavaトレーニングガイドをチェックしてください。