問題1-8
21から29までの数値を調査します。
その数値が3から9までの倍数である場合は「○は△の倍数です」と出力します。
【実行結果】
21は3の倍数です 21は7の倍数です 24は3の倍数です 24は4の倍数です 24は6の倍数です 24は8の倍数です 25は5の倍数です 27は3の倍数です 27は9の倍数です 28は4の倍数です 28は7の倍数です
【ForBasicPractice.java】
public class ForBasicPractice { public static void main(String[] args) { // for文の開始 } }
解答例
【ForBasicPractice.java】
public class ForBasicPractice { public static void main(String[] args) { // for文の開始 // 21から29までのループ for(int i = 21; i <= 29; i++) { // 3から9までの倍数か調査するためのループ for(int j = 3; j <= 9; j++) { // もし割った余りが0ならその倍数 if(i % j == 0) { System.out.println(i + "は" + j + "の倍数です"); } } } } }
解説
Javaの繰り返し構文の1つであるfor文は、C言語の流れを受け継いでいるせいもあり、少し文法に難しい印象があります。
しかし、for文はとても良く使いますので、正確に文法とその仕組みを理解しておきましょう。
今回の問題はもちろんfor文を使用しますが、数値の倍数判定を行うので、条件分岐分のif文も使わないとできません。
「倍数の判定」と聞いて、いきなりギブアップしてしまった「数学が苦手」な方もいるかもしれません。
「プログラマ」といえば理系というイメージを持つかもしれませんが、「プログラマの適正」に「文系・理系」は全く関係ありません。
複雑な計算をパソコンにさせるのがプログラマですから。
しかし、それでも基本的な数値の扱い方について慣れておく必要があります。
例えば「18は6の倍数か?」と人に聞かれれば、すぐに「そうです」と答えます。
それは「6×3=18」という九九がすぐに頭に浮かぶからです。
これを逆に考えると、「18は6で割り切れる」つまり「18を6で割った余り(剰余)が0である」ということです。
この「倍数」の基本的な発想は覚えておきましょう。
ちなみに、プログラムの世界で一番良く使う倍数の発想は「偶数・奇数判定」です。
偶数とはつまり「2の倍数」、言い換えると「2で割った余りが0の数値」と言うことです。
今回の問題で、次のように記述した人もいるかもしれません。
for(int i = 21; i <= 29; i++) { if(i % 3 == 0) { System.out.println(i + "は3の倍数です"); } if(i % 4 == 0) { System.out.println(i + "は4の倍数です"); } if(i % 5 == 0) { System.out.println(i + "は5の倍数です"); } ・・・以下省略 }
このプログラムでも間違いではありません。
実行結果も正しいです。
しかし、こういったプログラムを書いてはいけません。
「3で割れるか、次に4で割れるか、次に5で割れるか、・・・」と、同じようなプログラムをいくつもコーディングしているときに、「あれ?これってまとめられるかも?」と法則性に気づくことがとても大切です。
for文のネストを使えば、非常にスッキリと良いコードになります。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】