はじめに
このチュートリアルでは、Java の Scanner
クラスの使用方法について包括的なガイドを提供します。特に、堅牢な入力処理と効果的な例外ハンドリング技術に焦点を当てています。開発者は、Java アプリケーションで高度なエラー管理戦略を実装しながら、ユーザー入力を安全に読み取り、検証する方法を学ぶことができます。
このチュートリアルでは、Java の Scanner
クラスの使用方法について包括的なガイドを提供します。特に、堅牢な入力処理と効果的な例外ハンドリング技術に焦点を当てています。開発者は、Java アプリケーションで高度なエラー管理戦略を実装しながら、ユーザー入力を安全に読み取り、検証する方法を学ぶことができます。
Scanner
は、Java の java.util
パッケージに含まれる基本的なクラスで、入力ストリームからプリミティブ型や文字列の解析を行うために設計されています。ユーザー入力を読み取ったり、ファイル、システム入力、文字列バッファなどの様々なソースからデータを処理するためのシンプルで効率的な方法を提供します。
機能 | 説明 |
---|---|
入力解析 | 入力をさまざまなデータ型に変換します |
複数の入力ソース | System.in 、ファイル、文字列から読み取ることができます |
区切り文字のカスタマイズ | 入力解析にカスタム区切り文字を使用できます |
型安全な読み取り | さまざまなプリミティブ型の読み取りをサポートします |
// Reading from System input
Scanner scanner = new Scanner(System.in);
// Reading from a file
Scanner fileScanner = new Scanner(new File("example.txt"));
// Reading from a string
Scanner stringScanner = new Scanner("Hello World");
next()
: 次のトークンを文字列として読み取りますnextLine()
: 全行を読み取りますnextInt()
: 整数を読み取りますnextDouble()
: 倍精度浮動小数点数を読み取りますhasNext()
: さらに入力が存在するかどうかをチェックしますimport java.util.Scanner;
public class ScannerBasicDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.print("Enter your age: ");
int age = scanner.nextInt();
System.out.println("Hello, " + name + "! You are " + age + " years old.");
scanner.close();
}
}
Scanner
を閉じるLabEx では、Java の入力処理に習熟するために Scanner
の使用を練習することをおすすめします。
Scanner
は、さまざまなタイプの入力を効率的に処理するための多様なメソッドを提供します。これらのメソッドを理解することは、効果的なデータ処理に不可欠です。
メソッド | 説明 | 戻り値の型 |
---|---|---|
next() |
次のトークンを読み取ります | String |
nextLine() |
全行を読み取ります | String |
nextInt() |
整数を読み取ります | int |
nextDouble() |
倍精度浮動小数点数を読み取ります | double |
nextBoolean() |
ブール値を読み取ります | boolean |
import java.util.Scanner;
public class MultiInputProcessing {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter name: ");
String name = scanner.nextLine();
System.out.print("Enter age: ");
int age = scanner.nextInt();
System.out.print("Enter salary: ");
double salary = scanner.nextDouble();
System.out.println("Profile: " + name + ", Age: " + age + ", Salary: " + salary);
scanner.close();
}
}
Scanner scanner = new Scanner("apple,banana,cherry");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
Scanner scanner = new Scanner(System.in);
while (!scanner.hasNextInt()) {
System.out.println("Invalid input. Please enter an integer.");
scanner.next(); // Consume invalid input
}
int validNumber = scanner.nextInt();
Scanner
を閉じるtry-catch
を使用するLabEx では、Java の入力処理技術を習得するための実践的なアプローチを強調しています。
例外 | 説明 | 典型的な原因 |
---|---|---|
InputMismatchException |
入力が期待される型と一致しない場合に発生します | 読み取り中の型の不一致 |
NoScannerInputException |
入力ストリームが枯渇している場合に発生します | 入力がない状態で読み取りを試みる場合 |
IllegalStateException |
Scanner が閉じられている場合に発生します | 閉じた後に Scanner を使用する場合 |
import java.util.Scanner;
import java.util.InputMismatchException;
public class ScannerErrorHandling {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter an integer: ");
int number = scanner.nextInt();
System.out.println("You entered: " + number);
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter an integer.");
scanner.nextLine(); // Clear invalid input
} finally {
scanner.close();
}
}
}
import java.util.Scanner;
import java.util.InputMismatchException;
public class MultiExceptionHandling {
public static void safeReadInput() {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Enter age: ");
int age = scanner.nextInt();
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
System.out.println("Valid age: " + age);
} catch (InputMismatchException e) {
System.out.println("Invalid input type");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} finally {
scanner.close();
}
}
public static void main(String[] args) {
safeReadInput();
}
}
public static int readPositiveInteger(Scanner scanner) {
while (true) {
try {
System.out.print("Enter a positive integer: ");
int value = scanner.nextInt();
if (value > 0) {
return value;
}
System.out.println("Number must be positive");
} catch (InputMismatchException e) {
System.out.println("Invalid input. Try again.");
scanner.nextLine(); // Clear buffer
}
}
}
LabEx では、予期しない入力を適切に管理する堅牢な Java アプリケーションを作成するために、包括的なエラーハンドリングを推奨しています。
Scanner
と例外ハンドリング技術を習得することで、Java 開発者はより堅牢で使いやすいアプリケーションを作成することができます。入力検証、エラー検出、適切な例外管理を理解することは、Java プログラミング環境において高品質で信頼性の高いソフトウェアソリューションを開発するために不可欠なスキルです。