Java Scanner完全ガイド:実践例で学ぶ入力処理
Java Scannerをマスターする
JavaのScannerクラスを使用して、ストリーム、ファイル、文字列、コンソールからテキスト、数値、複雑な型を読み取る方法を、明確な実例で解説します。
java.utilのScannerクラスは、ストリーム、ファイル、文字列、コンソールから入力を取得できます。以下でその主要な使用パターンを説明します。
例1:テキスト行全体の読み取り
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// 標準入力から読み取るScannerを作成
Scanner input = new Scanner(System.in);
System.out.print("名前を入力してください: ");
// スペースを含む行全体を読み取り
String name = input.nextLine();
System.out.println("私の名前は " + name + " です");
input.close();
}
}
出力
名前を入力してください: Kelvin 私の名前は Kelvin です
Scanner input = new Scanner(System.in);行でキーボード入力をリッスンするScannerを構築していることに注目。
nextLine()メソッドは改行まで行全体を消費します。
Scannerクラスのインポート
Scannerを使用する前にインポート:
import java.util.Scanner;
パッケージインポートの詳細についてはJava Packagesを参照。
Scannerオブジェクトの作成
入力ソースに応じて以下のようにScannerをインスタンス化:
// 入力ストリームから(例: System.in)
Scanner sc1 = new Scanner(InputStream input);
// ファイルから
Scanner sc2 = new Scanner(File file);
// 文字列から
Scanner sc3 = new Scanner(String str);
入力用主要Scannerメソッド
Scannerクラスはさまざまなデータ型を読み取る多様なメソッドを提供。クイックリファレンス:
| メソッド | 説明 |
|---|---|
nextInt() | intを読み取り |
nextFloat() | floatを読み取り |
nextBoolean() | booleanを読み取り |
nextLine() | テキスト行全体を読み取り |
next() | 単語1つ(空白まで)を読み取り |
nextByte() | byteを読み取り |
nextDouble() | doubleを読み取り |
nextShort() | shortを読み取り |
nextLong() | longを読み取り |
例2:nextInt()の使用
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("整数を入力してください: ");
int data1 = input.nextInt();
System.out.println("nextInt()使用: " + data1);
input.close();
}
}
出力
整数を入力してください: 22 nextInt()使用: 22
例3:nextDouble()の使用
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Double値を入力: ");
double value = input.nextDouble();
System.out.println("nextDouble()使用: " + value);
input.close();
}
}
出力
Double値を入力: 33.33 nextDouble()使用: 33.33
例4:next()の使用
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("名前を入力: ");
String value = input.next();
System.out.println("next()使用: " + value);
input.close();
}
}
出力
名前を入力: Jonny Walker next()使用: Jonny
next()は最初の空白で停止するため、名のみ取得されることに注意。
例5:nextLine()の使用
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("名前を入力: ");
String value = input.nextLine();
System.out.println("nextLine()使用: " + value);
input.close();
}
}
出力
名前を入力: Jonny Walker nextLine()使用: Jonny Walker
next()とは異なり、nextLine()は改行文字までスペースを含む行全体を取得します。
推奨読書: Java Scanner nextLine()スキップ問題
BigIntegerとBigDecimalでのScanner
高精度数値のためにScannerは以下をサポート:
- nextBigInteger() –
BigIntegerを読み取り - nextBigDecimal() –
BigDecimalを読み取り
例:BigIntegerとBigDecimalの読み取り
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("大きな整数を入力: ");
BigInteger value1 = input.nextBigInteger();
System.out.println("nextBigInteger()使用: " + value1);
System.out.print("大きな小数を入力: ");
BigDecimal value2 = input.nextBigDecimal();
System.out.println("nextBigDecimal()使用: " + value2);
input.close();
}
}
出力
大きな整数を入力: 987654321 nextBigInteger()使用: 987654321 大きな小数を入力: 9.55555 nextBigDecimal()使用: 9.55555
Scannerの内部動作
Scannerは行全体を読み取り、デフォルトで空白を区切り文字としてトークンに分割します。各トークンは適切なメソッドで取得可能。例えば入力He is 22の場合、トークンはHe、is、22になります。
ヒント: トークンはスペース、タブ、改行で区切られますが、区切り文字をカスタマイズ可能です。
Java
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java継承のマスター:概念、種類、実践例
- Java Staticネストクラスの理解:用法、違い、実例
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
- Java Scanner完全ガイド:実践例で学ぶ入力処理
- Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除