Java – キーボードから数字を入力する – 小数点以下にも対応
Javaでキーボードから小数点以下を含む数字を入力するには、Scanner
クラスを使用します。
Scanner
のnextDouble()
メソッドを用いると、小数点を含む数値を直接取得できます。
入力値が数値でない場合は例外が発生するため、エラーハンドリングを行うと安全です。
また、nextLine()
で文字列として取得し、Double.parseDouble()
で変換する方法もあります。
キーボード入力の基本とScannerクラスの概要
Javaでキーボードからの入力を行うためには、Scanner
クラスを使用します。
このクラスは、標準入力からデータを読み取るための便利なメソッドを提供しています。
以下に、Scanner
クラスの基本的な使い方を説明します。
Scannerクラスのインポート
まず、Scanner
クラスを使用するためには、java.util
パッケージからインポートする必要があります。
以下のように記述します。
import java.util.Scanner; // Scannerクラスをインポート
Scannerクラスのインスタンス化
次に、Scanner
クラスのインスタンスを作成します。
通常、System.in
を引数に渡して、標準入力を指定します。
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
基本的な入力メソッド
Scanner
クラスには、さまざまなデータ型に対応した入力メソッドがあります。
以下は、主なメソッドの一覧です。
メソッド名 | 説明 |
---|---|
nextInt() | 整数を入力 |
nextDouble() | 小数を入力 |
nextLine() | 文字列を入力 |
next() | 単語を入力 |
以下は、キーボードから整数と小数を入力するサンプルコードです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
// 整数の入力を促す
System.out.print("整数を入力してください: ");
int integerInput = scanner.nextInt(); // 整数を入力
// 小数の入力を促す
System.out.print("小数を入力してください: ");
double doubleInput = scanner.nextDouble(); // 小数を入力
// 入力された値を表示
System.out.println("入力された整数: " + integerInput);
System.out.println("入力された小数: " + doubleInput);
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
整数を入力してください: 5
小数を入力してください: 3.14
入力された整数: 5
入力された小数: 3.14
このように、Scanner
クラスを使用することで、簡単にキーボードからの入力を受け取ることができます。
次のセクションでは、小数点以下を含む数値の入力方法について詳しく解説します。
小数点以下を含む数値の入力方法
Javaで小数点以下を含む数値を入力する場合、Scanner
クラスのnextDouble()
メソッドを使用します。
このメソッドは、ユーザーが入力した小数をdouble
型として取得することができます。
以下に、具体的な方法と注意点を説明します。
小数点の入力形式
日本語環境では、小数点を .
で表現することが一般的です。
例えば、3.14や2.5などの形式で入力します。
これに対して、カンマ ,
を使用する場合は、プログラムが正しく認識できないため注意が必要です。
以下は、小数点以下を含む数値を入力し、その値を表示するサンプルコードです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
// 小数の入力を促す
System.out.print("小数を入力してください: ");
double doubleInput = scanner.nextDouble(); // 小数を入力
// 入力された値を表示
System.out.println("入力された小数: " + doubleInput);
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
小数を入力してください: 3.14
入力された小数: 3.14
注意点
- 入力形式: 小数点を
.
で入力することを忘れないでください。
カンマ ,
を使用すると、InputMismatchException
が発生します。
- エラーハンドリング: ユーザーが不正な値を入力した場合に備えて、エラーハンドリングを行うことが推奨されます。
次のセクションでは、入力エラーへの対処方法について解説します。
入力エラーへの対処方法
ユーザーがキーボードから数値を入力する際、意図しない形式のデータを入力することがあります。
これにより、プログラムが正常に動作しなくなる可能性があります。
Javaでは、Scanner
クラスを使用して入力エラーを適切に処理するための方法をいくつか紹介します。
例外処理を使用する
Javaでは、try-catch
ブロックを使用して例外を捕捉し、エラーが発生した場合に適切な処理を行うことができます。
以下は、nextDouble()
メソッドを使用して小数を入力する際のエラーハンドリングの例です。
以下のコードは、ユーザーが小数を入力する際にエラーが発生した場合に再度入力を促すプログラムです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
double doubleInput = 0.0; // 入力された小数を格納する変数
while (true) { // 無限ループ
try {
// 小数の入力を促す
System.out.print("小数を入力してください: ");
doubleInput = scanner.nextDouble(); // 小数を入力
break; // 正常に入力された場合、ループを抜ける
} catch (Exception e) {
// エラーが発生した場合の処理
System.out.println("無効な入力です。再度入力してください。");
scanner.next(); // 不正な入力をクリア
}
}
// 入力された値を表示
System.out.println("入力された小数: " + doubleInput);
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
小数を入力してください: abc
無効な入力です。再度入力してください。
小数を入力してください: 2.5
入力された小数: 2.5
エラーハンドリングのポイント
- 無限ループ:
while (true)
を使用して、正しい入力が得られるまでループを続けます。 - 例外捕捉:
catch (Exception e)
で、すべての例外を捕捉し、エラーメッセージを表示します。 - 不正な入力のクリア:
scanner.next()
を使用して、不正な入力をクリアし、次の入力を受け付ける準備をします。
このように、入力エラーへの対処方法を実装することで、ユーザーが誤った形式のデータを入力した際にも、プログラムが適切に動作し続けることができます。
次のセクションでは、文字列から小数値への変換方法について詳しく解説します。
文字列から小数値への変換方法
Javaでは、ユーザーからの入力を文字列として受け取ることが一般的です。
特に、Scanner
クラスのnextLine()
メソッドを使用して文字列を取得した後、その文字列を小数値に変換する必要がある場合があります。
このセクションでは、文字列から小数値への変換方法を解説します。
Double.parseDouble()メソッドの使用
文字列を小数値に変換するためには、Double.parseDouble()
メソッドを使用します。
このメソッドは、文字列をdouble
型に変換し、数値として扱えるようにします。
以下に、具体的な使用例を示します。
以下のコードは、ユーザーから文字列として小数を入力し、それをdouble
型に変換して表示するプログラムです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
// 小数の入力を促す
System.out.print("小数を文字列として入力してください: ");
String stringInput = scanner.nextLine(); // 文字列を入力
try {
// 文字列を小数に変換
double doubleInput = Double.parseDouble(stringInput); // 文字列をdoubleに変換
// 入力された値を表示
System.out.println("入力された小数: " + doubleInput);
} catch (NumberFormatException e) {
// 変換に失敗した場合の処理
System.out.println("無効な小数形式です。");
}
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
小数を文字列として入力してください: 3.14
入力された小数: 3.14
無効な形式の入力を行った場合の出力は以下の通りです。
小数を文字列として入力してください: abc
無効な小数形式です。
注意点
- 例外処理:
Double.parseDouble()
メソッドは、無効な形式の文字列を渡すとNumberFormatException
をスローします。
これをtry-catch
ブロックで捕捉し、エラーメッセージを表示することが重要です。
- 入力形式: 小数点は
.
で入力する必要があります。
カンマ ,
を使用すると、変換に失敗します。
このように、文字列から小数値への変換を行うことで、ユーザーからの入力を柔軟に扱うことができます。
次のセクションでは、複数の数値を連続して入力する方法について解説します。
応用:複数の数値を連続して入力する方法
Javaでは、ユーザーから複数の数値を連続して入力させることができます。
これを実現するためには、ループを使用して、必要な回数だけ入力を受け付ける方法が一般的です。
以下に、複数の小数を連続して入力する方法を解説します。
ループを使用した入力方法
for
ループやwhile
ループを使用して、指定した回数だけ数値を入力させることができます。
以下のサンプルコードでは、ユーザーに指定した回数だけ小数を入力させ、その合計を計算して表示します。
以下のコードは、ユーザーから3つの小数を入力させ、その合計を計算して表示するプログラムです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
double sum = 0.0; // 合計を格納する変数
// 入力する小数の数を指定
int numberOfInputs = 3; // ここでは3つの小数を入力
for (int i = 0; i < numberOfInputs; i++) {
System.out.print((i + 1) + "つ目の小数を入力してください: ");
double doubleInput = scanner.nextDouble(); // 小数を入力
sum += doubleInput; // 合計に加算
}
// 合計を表示
System.out.println("入力された小数の合計: " + sum);
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
1つ目の小数を入力してください: 1.5
2つ目の小数を入力してください: 2.5
3つ目の小数を入力してください: 3.0
入力された小数の合計: 7.0
注意点
- ループの回数:
numberOfInputs
変数で、入力する小数の数を指定しています。
この値を変更することで、任意の数の小数を入力させることができます。
- エラーハンドリング: 複数の数値を入力する場合、各入力に対してエラーハンドリングを行うことが推奨されます。
try-catch
ブロックを使用して、無効な入力があった場合に再度入力を促すことができます。
このように、ループを使用することで、ユーザーから複数の数値を連続して入力させることが可能です。
次のセクションでは、実践例として小数点を含む数値の計算プログラムを紹介します。
実践例:小数点を含む数値の計算プログラム
このセクションでは、ユーザーから複数の小数を入力させ、その合計、平均、最大値、最小値を計算するプログラムを実装します。
このプログラムは、前のセクションで学んだ内容を応用し、実際の計算を行う例となります。
プログラムの概要
- ユーザーに小数の数を入力させる。
- 指定された数だけ小数を入力させる。
- 入力された小数の合計、平均、最大値、最小値を計算する。
- 結果を表示する。
以下のコードは、上記の機能を実装したプログラムです。
import java.util.Scanner; // Scannerクラスをインポート
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scannerのインスタンスを作成
// 入力する小数の数を指定
System.out.print("いくつの小数を入力しますか?: ");
int numberOfInputs = scanner.nextInt(); // 入力する小数の数を取得
double[] numbers = new double[numberOfInputs]; // 小数を格納する配列
double sum = 0.0; // 合計を格納する変数
double max = Double.NEGATIVE_INFINITY; // 最大値を初期化
double min = Double.POSITIVE_INFINITY; // 最小値を初期化
// 小数の入力を促す
for (int i = 0; i < numberOfInputs; i++) {
System.out.print((i + 1) + "つ目の小数を入力してください: ");
numbers[i] = scanner.nextDouble(); // 小数を入力
sum += numbers[i]; // 合計に加算
// 最大値と最小値の更新
if (numbers[i] > max) {
max = numbers[i];
}
if (numbers[i] < min) {
min = numbers[i];
}
}
// 平均を計算
double average = sum / numberOfInputs;
// 結果を表示
System.out.println("入力された小数の合計: " + sum);
System.out.println("入力された小数の平均: " + average);
System.out.println("入力された小数の最大値: " + max);
System.out.println("入力された小数の最小値: " + min);
scanner.close(); // Scannerを閉じる
}
}
このプログラムを実行すると、以下のような出力が得られます。
いくつの小数を入力しますか?: 3
1つ目の小数を入力してください: 1.5
2つ目の小数を入力してください: 2.5
3つ目の小数を入力してください: 3.0
入力された小数の合計: 7.0
入力された小数の平均: 2.3333333333333335
入力された小数の最大値: 3.0
入力された小数の最小値: 1.5
プログラムのポイント
- 配列の使用: 入力された小数を格納するために配列を使用しています。
これにより、後で最大値や最小値を計算する際に便利です。
- 初期値の設定: 最大値と最小値を初期化する際に、
Double.NEGATIVE_INFINITY
とDouble.POSITIVE_INFINITY
を使用することで、どんな数値でも正しく比較できます。 - 平均の計算: 合計を入力数で割ることで平均を計算しています。
このプログラムを通じて、ユーザーからの入力を受け取り、さまざまな計算を行う方法を学ぶことができました。
これにより、Javaでの数値処理の基本的な流れを理解することができます。
まとめ
この記事では、Javaにおけるキーボードからの数値入力方法について、特に小数点以下を含む数値の取り扱いに焦点を当てて解説しました。
Scanner
クラスを使用した基本的な入力方法から、エラーハンドリング、文字列からの小数値変換、複数の数値を連続して入力する方法、さらには実践的な計算プログラムの実装まで、幅広い内容をカバーしました。
これを機に、実際にプログラムを作成してみることで、Javaの入力処理に関するスキルをさらに向上させてみてください。