2023.03.08
Javaプログラミング
キーボードで実数(double)を入力
ここでは、キーボードを使って入力された文字を実数型(double)の変数に代入する方法を解説しています。
ソースコードを簡単にするために、キーボードで入力した値のエラーを判定する処理は入れていません。そのため、エラーがある場合はプログラムが強制終了します。
Javaソースコード
Scannertodouble1.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
import java.util.Scanner; public class Scannertodouble1 { public static void main( String[] args ) { // メッセージを表示 System.out.println( "実数を入力してください" ); // Scannerを作成 Scanner scan = new Scanner( System.in ); // 入力された値をdouble型の値に変換して変数に代入 double value = scan.nextDouble(); // 変数valueの値をコンソール出力 System.out.println( "入力した実数は、" + value ); } }
実行結果
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Scannertodouble1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Scannertodouble1.java
実行例1
C:\talavax\javasample>java Scannertodouble1 実数を入力してください 0.3
出力結果
入力した実数は、0.3
キーボードで入力した3が出力されています。
実行例2
C:\talavax\javasample>java Scannertodouble1 実数を入力してください 20.55 8.9
出力結果
入力した実数は、20.55
キーボードで入力した"20.55 8.9"は、20.55と8.9が半角スペースで区切られているので、区切りの先頭の20.55が出力されています。
実行例3
C:\talavax\javasample>java Scannertodouble1 実数を入力してください 0.00003
出力結果
入力した実数は、3.0E-5
実行例4
C:\talavax\javasample>java Scannertodouble1 実数を入力してください 10e-4
出力結果
入力した実数は、0.001
キーボードで入力した指数表記の値"10e-4"(10のマイナス4乗)が、0.001で出力されています。
実行例5
C:\talavax\javasample>java Scannertodouble1 実数を入力してください 1234
出力結果
入力した実数は、1234.0
キーボードで入力した整数の値"1234"が、1234.0で出力されています。
実行例6
C:\talavax\javasample>java Scannertodouble1 実数を入力してください A
出力結果
Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:943) at java.base/java.util.Scanner.next(Scanner.java:1598) at java.base/java.util.Scanner.nextDouble(Scanner.java:2569) at Scannertodouble1.main(Scannertodouble1.java:12)
キーボードで入力したAは数値ではないので、プログラムがエラーメッセージを出力して強制終了しました。
Javaソースコードの解説
001
import java.util.Scanner;
003
public class Scannertodouble1 {
クラス名を、Scannertodouble1としています。
004
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
005 006
// メッセージを表示 System.out.println( "実数を入力してください" );
printlnメソッドで、メッセージ”実数を入力してください”をコンソール出力しています。
008 009
// Scannerを作成
Scanner scan = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
011 012
// 入力された値をdouble型の値に変換して変数に代入 double value = scan.nextDouble();
nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型の変数valueに代入しています。
ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数valueに格納されます。
入力された文字が"2.0"の場合、変数value=2.0になります。
入力された文字が"-6.0"の場合、変数value=-6.0になります。
入力された文字が"+3.0"の場合、変数value=-3.0になります。プラス(+)記号があってもエラーになりません。
入力された文字が"32.6 4.4 27.1"の場合、変数value=32.6になります。半角スペースで区切られた1番目の値は、32.6です。
入力された文字が"24.0 A"の場合、変数value=24.0になります。半角スペースで区切られた1番目の値は、24.0です。
入力された文字が"D 132"の場合、'D'が数値でないため、エラーとなり、プログラムが強制終了します。半角スペースで区切られた1番目の値は、Dです。
入力された文字が"128"の場合、変数value=128.0になります。'128'に小数点はありませんがエラーになりません。
入力された文字が"100e2"の場合、変数value=10000.0になります。'100e2'は指数表記で、100の2乗を表しているので値は10000になります。
キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
014 015
// 変数valueの値をコンソール出力 System.out.println( "入力した実数は、" + value );
変数valueの値をprintlnメソッドでコンソール出力しています。