文字列入力の変換を扱う
実際のアプリケーションでは、ユーザーからの入力を取得する必要があり、この入力は通常 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()
チェックを適用し、同時に無効な入力による潜在的なエラーを処理する方法を示しています。