Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
new Scanner() / スキャナー.nextLine() / nextInt()
『Scanner』クラスはキーボードからの標準入力やファイルからテキストを読み取るためのクラスです。コンソールプログラムでユーザーの入力を受け取る際によく使用します。テキスト全体の読み取りには『nextLine()』、数値の読み取りには『nextInt()』などを使います。
構文
// 標準入力(キーボード)を読み取る Scanner を作成します。 Scanner scanner = new Scanner(System.in); // 1行全体を文字列として読み取ります。 String line = scanner.nextLine(); // 単語(スペース区切り)を文字列として読み取ります。 String word = scanner.next(); // 整数を読み取ります。 int num = scanner.nextInt(); // double を読み取ります。 double d = scanner.nextDouble(); // まだ読み取るデータがあるか確認します。 scanner.hasNextLine();
メソッド一覧
| メソッド | 概要 |
|---|---|
| new Scanner(System.in) | 標準入力(キーボード)を読み取る Scanner を作成します。 |
| nextLine() | 次の行全体を文字列として読み取ります(改行文字を含まない)。 |
| next() | 次のトークン(スペース・タブ・改行で区切られた単語)を文字列として読み取ります。 |
| nextInt() | 次のトークンを int 型として読み取ります。 |
| nextDouble() | 次のトークンを double 型として読み取ります。 |
| hasNextLine() | 次の行が存在するか確認し、boolean 型で返します。 |
サンプルコード
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
// 名前を1行読み取ります。
System.out.print("名前を入力してください: ");
String name = scanner.nextLine();
System.out.println("こんにちは、" + name + "さん!");
// 整数を読み取ります。
System.out.print("年齢を入力してください: ");
int age = scanner.nextInt();
System.out.println("来年は " + (age + 1) + " 歳ですね。");
// nextInt() の後に nextLine() を呼ぶ場合は改行を消費します。
scanner.nextLine(); // バッファに残った改行を読み捨てます。
// 複数行を読み取ります。
System.out.println("文章を入力してください('end' で終了):");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.equals("end")) break;
System.out.println("入力: " + line);
}
// 使い終わったら閉じます。
scanner.close();
概要
『nextInt()』などで数値を読み取った後に『nextLine()』を呼ぶと、バッファに残った改行文字を読み取ってしまい空文字が返ることがあります。この問題を避けるには、数値読み取りの直後に scanner.nextLine() を1回呼んで改行を消費してください。
数値として解釈できない文字列が入力された場合は InputMismatchException がスローされます。ユーザー入力を検証する場合は try-catch を使うか、『nextLine()』で読み取ってから Integer.parseInt() で変換する方が安全です。
バッファリングされた入力の読み取りについては『new BufferedReader() / readLine()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。