2023.03.16
Javaプログラミング
キーボードで2つの実数(double)を入力
ここでは、キーボードを使って入力された2つの文字をそれぞれ2つの実数型(double)の変数に代入する方法を解説しています。
2つの値の入力は、値を半角スペースで区切るか、値を入力した後にEnterキーを押していく方法があります。どちらの入力方法も同じソースコードです。
以下は、2つの値を入力する例です。2つの実数623.54と88.13を入力しています。
実行例1 - 半角スペースで値を区切る
2つの実数を入力してください 623.54 88.13
実行例2 - 1つ値を入力した後にEnterキーを押す
2つの実数を入力してください 623.54 88.13
Javaソースコード
Scannertodouble2.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018
import java.util.Scanner; public class Scannertodouble2 { public static void main( String[] args ) { // メッセージを表示 System.out.println( "2つの実数を入力してください" ); // Scannerを作成 Scanner scan = new Scanner( System.in ); // 入力された2つの値をdouble型の値に変換して変数に代入 double value1 = scan.nextDouble(); double value2 = scan.nextDouble(); // 変数value1とvalue2の値をコンソール出力 System.out.println( "入力した実数は、" + value1 + "と" + value2 ); } }
実行結果
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Scannertodouble2.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Scannertodouble2.java
実行例1
C:\talavax\javasample>java Scannertodouble2 実数を入力してください 0.4 2.0
出力結果
入力した実数は、0.4と2.0
半角スペースで区切った2つの値、0.4と2.0が出力されています。
実行例2
C:\talavax\javasample>java Scannertodouble2 実数を入力してください 5.8 10.1
出力結果
入力した実数は、5.8と10.1
1つの値ごとにEnterキーを押して入力した2つの値、5.8と10.1が出力されています。
実行例3
C:\talavax\javasample>java Scannertodouble2 実数を入力してください 10e-3 6
出力結果
入力した実数は、0.01と6.0
キーボードで入力した指数表記の値"10e-3"(10のマイナス3乗)が0.01、小数点なしの6が6.0で出力されています。
実行例4
C:\talavax\javasample>java Scannertodouble2 実数を入力してください 6.3 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 Scannertodouble2.main(Scannertodouble2.java:13)
キーボードで入力したAは数値ではないので、プログラムがエラーメッセージを出力して強制終了しました。
Javaソースコードの解説
001
import java.util.Scanner;
003
public class Scannertodouble2 {
クラス名を、Scannertodouble2としています。
004
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
005 006
// メッセージを表示 System.out.println( "2つの実数を入力してください" );
printlnメソッドで、メッセージ”実数を入力してください”をコンソール出力しています。
008 009
// Scannerを作成
Scanner scan = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
011 012 013
// 入力された2つの値をdouble型の値に変換して変数に代入 double value1 = scan.nextDouble(); double value2 = scan.nextDouble();
nextDoubleメソッドで、キーボードから入力された値を読み取っています。
ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数valueに格納されます。
Enterキーが押されるまでに入力した値が1つの場合、入力した値が変数value1に代入されます。この時点で、2つ目の値が入力されていないので13行目のnextDoubleメソッドで値が入力されるまで待ち状態となります。値を入力してEnterキーを押すと、その値が変数value2に代入されます。
このように、値が入力されるまでnextDoubleメソッドは待ち状態になります。
キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
015 016
// 変数value1とvalue2の値をコンソール出力 System.out.println( "入力した実数は、" + value1 + "と" + value2 );
変数valueの値をprintlnメソッドでコンソール出力しています。
以上です。