0301「整数値が5桁であるかを判定しよう」

今回やりたいこと

  • 条件分岐を行う
    • if 文


例題

たかしくんは、ある2つの整数の積が5桁になるかどうかが気になって夜しか眠れない。

2つの正の整数値を標準入力に入力したとき、それらの積を計算し、それが5桁であるかどうかを判定するプログラムを作成しなさい。


要件

  • 計算結果が5桁ちょうどのときは「match」、5桁を超えるときは「above」、5桁に満たないときは「below」を標準出力に表示する



実行例1

標準入力
100
200
標準出力
match



実行例2

標準入力
30
40
標準出力
below


サンプルコード

import java.util.Scanner;

public class Ex_03_01 {

	public static void main(String[] args) {
		final int DIGIT = 5;	// 判定基準となる桁数

		// 入力
		Scanner scan = new Scanner(System.in);
		int a = scan.nextInt();	// 1つめに入力された整数
		int b = scan.nextInt();	// 2つめに入力された整数
		int product = a*b;	// 判定される数

		// 判定
		String message;
		if(product < Math.pow(10, DIGIT-1)) message = "below";		// 基準に満たないとき
		else if(product >= Math.pow(10, DIGIT)) message = "above";	// 基準を超えたとき
		else message = "match";						// 基準の範囲内のとき

		// 出力
		System.out.println(message);
		}

	}


解説

Math.pow(double a, double b)

前回から説明なく使用していましたが 1つめの引数を2つめの引数で累乗した値 ab を返すメソッドです。

以下の2つのプログラムは同じはたらきをします。

final int DIGIT = 5;
if(product < Math.pow(10, DIGIT-1)) message = "below";
else if(product >= Math.pow(10, DIGIT)) message = "above";
if(product < 10000) message = "below";
else if(product >= 100000) message = "above";


応用

5桁かどうかを判定するだけでいいときは、判定部分を

String message;
if(product >= Math.pow(10, DIGIT-1) && product < Math.pow(10, DIGIT)) message = "Yes";	// 桁数が一致する場合
else message = "No";									// 桁数が一致しない場合

としてもいいでしょう!