文字列入力の変換を処理する
実際のアプリケーションでは、ユーザーからの入力を取得する必要があり、この入力は通常 String として読み取られます。入力が整数を表すかどうかを判断するなどの数値チェックを行うには、まず String を double などの数値型に変換する必要があります。
このステップでは、プログラムを修正して、ユーザー入力を String として受け取り、それを double に変換してから、Math.floor() を使って元の入力が整数を表すかどうかをチェックします。
WebIDE エディタで IntegerCheck.java ファイルを開きます。
既存のコードを以下のコードに置き換えます。
import java.util.Scanner; // Import the Scanner class
public class IntegerCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Create a Scanner object
System.out.print("Enter a number: "); // Prompt the user for input
String input = scanner.nextLine(); // Read user input as a String
try {
// Convert the String input to a double
double number = Double.parseDouble(input);
// Check if the number is an integer using Math.floor()
if (number == Math.floor(number)) {
System.out.println("The input '" + input + "' represents an integer.");
} else {
System.out.println("The input '" + input + "' does not represent an integer.");
}
} catch (NumberFormatException e) {
// Handle cases where the input is not a valid number
System.out.println("Invalid input: '" + input + "' is not a valid number.");
} finally {
scanner.close(); // Close the scanner
}
}
}
コードの新しい部分を見てみましょう。
import java.util.Scanner;:この行は、コンソールからの入力を読み取るために使用される Scanner クラスをインポートします。
Scanner scanner = new Scanner(System.in);:これは、標準入力ストリーム(System.in、通常はキーボード)から入力を読み取る Scanner オブジェクトを作成します。
System.out.print("Enter a number: ");:この行は、ユーザーに数値の入力を促します。
String input = scanner.nextLine();:これは、ユーザーが入力した全行を String として読み取り、input 変数に格納します。
try { ... } catch (NumberFormatException e) { ... }:これは try-catch ブロックです。潜在的なエラーを処理するために使用されます。この場合、String 入力を double に変換しようとしています。入力が有効な数値でない場合(例えば、"hello")、NumberFormatException が発生し、catch ブロック内のコードが実行されます。
double number = Double.parseDouble(input);:これが変換の重要な部分です。Double.parseDouble() は Double クラスの静的メソッドで、String を double 値に変換しようとします。
finally { scanner.close(); }:finally ブロックは、例外が発生したかどうかに関係なく、scanner.close() メソッドが呼び出され、Scanner が使用しているシステムリソースが解放されることを保証します。
IntegerCheck.java ファイルを保存します。
次に、~/project ディレクトリのターミナルからプログラムをコンパイルして実行します。
javac IntegerCheck.java
java IntegerCheck
プログラムは、入力を待機するようになります。
整数(例えば 42)を入力して Enter キーを押してみましょう。出力は次のようになるはずです。
Enter a number: 42
The input '42' represents an integer.
プログラムを再度実行し、非整数の数値(例えば 3.14)を入力して Enter キーを押します。出力は次のようになるはずです。
Enter a number: 3.14
The input '3.14' does not represent an integer.
プログラムをもう一度実行し、数値ではないもの(例えば test)を入力して Enter キーを押します。出力は次のようになるはずです。
Enter a number: test
Invalid input: 'test' is not a valid number.
これは、ユーザー入力を String として扱い、それを数値型に変換してから Math.floor() チェックを適用し、同時に無効な入力による潜在的なエラーを処理する方法を示しています。