🎃

ITスクールの授業3日目のまとめ:キーボードでデータを入力する方法(Scanner)

2023/07/19に公開

前書き

今までのデータの入力は、Eclipseのコード上で直接する以外には方法がなかった。しかし、プログラムは実行した以後でもデータが入力できたはずである。たとえば、WEB上やアプリケーションやゲームなどでログインをする時、ラインでチャットを書いて送ったりなどなどの場合がある。

JAVAでは、「Scanner」というクラスを通じて、プログラムが実行されている途中にデータを入力することができる。

Scannerクラスを使うためには、javaファイルの上段に「import java.util.Scanner;」を書く。これは、今のコードの外にある「java.util」というパッケージから「Scanner」というクラスを引き込むコードである。例文は下記のようである。

import java.util.Scanner;

public class ScannerEx1{
	public static void main(String[] args) {
	
	}
}

今回は「Scanner」を通じてプログラムを実行した後に宣言しておいた変数に値を入力し、その変数で演算や出力をしてみようと思う。

Scannerを使用するための、「インスタンス」を生成

Scannerを使うためには、最初のimportの他にも「インスタンス」を作る必要がある。Scannerのインスタンスを通じて、ユーザーがプログラムの実行中に入力した内容を文字列に受けて、受けた内容を変数に当たるデータに変換して代入してくれる。

import java.util.Scanner;

public class ScannerEx1 {

	public static void main(String[] args) {
		int a = 0;
		double b = 0.0;
		String c = " ";
		
		Scanner sc = new Scanner(System.in); //ここに注目!!
	
	}
	
}

上のコードで「Scanner sc = new Scanner(System.in);」と書いてあるところが、インスタンスを生成するコードである。「sc」はインスタンスの名前であるので変えても構わないが、それ以外のコードは覚えておいてもいまは大丈夫だと思う。

インスタンスが何であるかはクラスを学ぶ時に詳しく学ぶ予定であるので、今は「プログラムの実行中に入力するためにはあのscが必ず要る」ということを覚えておこう。

Scannerインスタンスを通じて、変数に値を入力

Scannerインスタンスを生成できたなら、上に宣言しておいた変数に、プログラムが実行した後にも値を代入することができる。

import java.util.Scanner;

public class ScannerEx1 {

	public static void main(String[] args) {
		int a = 0;
		double b = 0.0;
		String c = " ";
		
		Scanner sc = new Scanner(System.in); 
		System.out.print("整数を入力してください。: ")
		a = sc.nextInt(); //ここに注目!!!!!!
		System.out.print("実数を入力してください。: ")
		b = sc.nextDouble(); //ここに注目!!!!!!
		System.out.print("文字列を入力してください。: ")
		c = sc.next(); //ここに注目!!!!!!
	}	
}

上のコードを実行すると、各「a = sc.nextInt();」、「b = sc.nextDouble();」「c = sc.nextLine();」の上のprint文を出力して、プログラムが待期することになる。

その状態で、キーボードの「Enter」ボタンを押すまでに、その間キーボードで入力されていたキーを覚える。そして「Enter」を押すと、ひとまず覚えていたキーを文字列に変換して、代入しようとする変数のデータ型にもう一度変換して変数に代入する。

上のコードを書いて実行すると、下記のようになる。

他に解けてみた、Scanner入力問題

次は、ITスクールでもらった問題で、自分で解けて提出したコードである。

import java.util.Scanner;

public class Circle {

	// 円の半径を求めてみる問題。
	
	public static void main(String[] args) {
		
		//変数を宣言
		double radius;
		double round;
		double area;
		final double PI = Math.PI;

		Scanner sc = new Scanner(System.in);
			
		//入力
		System.out.print("円の半径を入力してください。");
		radius = sc.nextDouble();
			
		//演算
		round = radius * 2.0 * PI;
		area = radius * radius * PI;
			
		//出力
			System.out.printf("半径が%.1fである時、円周は%.1fになります。\n", radius, round);
			System.out.printf("半径が%.1fである時、円の面積は%.1fになります。.", radius, area);
		}

}
import java.util.Scanner;

public class Square {

	//四角形のまわり?と面積を求める問題。
	
	public static void main(String[] args) {
		
		//変数の宣言
		double width;
		double height;
		double round;
		double area;
		Scanner sc = new Scanner(System.in);
				
		//入力
		System.out.print("四角形の横(よこ)を入力してください。 : ");
		width = sc.nextDouble();
		System.out.print("四角形の縦(たて)を入力してください。 : ");
		height = sc.nextDouble();
				
		//演算
		round = (width + height) * 2.0;
		area = width * height;
				
		//出力
		System.out.printf("四角形のまわりは%.1fになります。\n", round);
		System.out.printf("四角形の面積は%.1fになります。", area);
				
		sc.close();
	}

}

Discussion