0202「整数値を位ごとに表示しよう」
例題
たかしくんは、お宝を鑑定する番組を毎週かかさず見ている。
鑑定額を表示するときに一の位から順に金額が発表されるところが射幸心を煽るので特に好きである。
5桁以下の整数値を標準入力に入力したとき、その整数を下の位から順に一行に一桁ずつ数字を標準出力に出力するプログラムを作成しなさい。
要件
- 5桁未満の整数値が入力されたとき、空桁には 0 を出力する
実行例1
標準入力
12345
標準出力
5 4 3 2 1
実行例2
標準入力
123
標準出力
3 2 1 0 0
サンプルコード
import java.util.Scanner; public class Ex_02_02 { public static void main(String[] args) { // 入力 Scanner scan = new Scanner(System.in); int x = scan.nextInt(); // 出力 System.out.println(x%10); // 一の位を出力 System.out.println((x%100)/10); // 十の位を出力 System.out.println((x%1000)/100); // 百の位を出力 System.out.println((x%10000)/1000); // 千の位を出力 System.out.println(x/10000); // 万の位を出力 } }
解説
アルゴリズム
System.out.println(x%10);
x を10で割ったときのあまりを出力します。
これは x の一の位を出力することと同じです。
12345 ÷ 10 = 1234 あまり 5
System.out.println((x%100)/10);
x を100で割ったときのあまりを10で割った値を出力します。
これは x の十の位を出力することと同じです。
12345 ÷ 100 = 123 あまり 45 45 ÷ 10 = 4.5 (ここで x は int 型なので整数部だけが出力されます)
System.out.println(x/10000);
x を10000で割った値を出力します。
これは x の万の位を出力することと同じです。
12345 ÷ 10000 = 1 (ここで x は int 型なので整数部だけが出力されます)
応用
特定の桁だけ出力したい場合、不要な System.out.println メソッドを削除するだけでよさそうですね!
予告
似たような出力処理が複数行にわたって書かれていて美しくないですよね。
次回、これらを繰り返し文を使ってスマートに書いていきます。