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"; // 桁数が一致しない場合
としてもいいでしょう!