Tips

【Java】プログラム作成練習問題 4

【Java】プログラム作成練習問題 4

プログラム作成問題の第4回となります。

※この出題形式に関しては答えは1つではありません。
回答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正解として下さい。

問題

int型の変数nが0まで1ずつ増減するプログラムを作成せよ。
nが正の場合は減り、負の場合は増えていくこと。

解答例1
package exercise;

public class Exercise_004 {
    public static void main(String[] args) {
        int n = -5;

        if(n > 0) {
            for(int i = n; i >= 0; i--) {
                System.out.println(i);
            }
        } else {
            for(int i = n; i <= 0; i++) {
                System.out.println(i);
            }
        }
    }
}

ロジックとしてはこれが一番シンプルな書き方な気がします。


解答例2
package exercise;

public class Exercise_004 {
    public static void main(String[] args) {
        int n = 5;

        while(n != 0) {
            if(n > 0) {
                System.out.println(n--);
            } else {
                System.out.println(n++);
            }
        }
        System.out.println(n);
    }
}

while文を使った書き方です。
増減処理を1つのwhile文にまとめると0が出力できなくなってしまうため、14行目で補っています。
インクリメントやデクリメントを前置にする場合は、14行目の処理がwhile文の前にきます。


解答例3
package exercise;

public class Exercise_004 {
    public static void main(String[] args) {
        int n = 5;
        incOrDecToZero(n);
    }

    static void incOrDecToZero(int n) {
        System.out.println(n);
        if(n > 0) {
            incOrDecToZero(--n);
        } else if(n < 0) {
            incOrDecToZero(++n);
        }
    }
}

少しマニアックに再帰を使ってみました。
あるメソッド内で同一メソッドを呼ぶことを再帰と言います。
再帰を使うとfor文やwhile文を使わずに繰り返し処理が書けます。


間違い例

package exercise;

public class Exercise_004 {
    public static void main(String[] args) {
        int n = 5;

        if (n > 0) {
            for (int i = n; i > 0; i--) {
                System.out.println(i);
            }
        } else {
            for (int i = n; i < 0; i++) {
                System.out.println(i);
            }
        }
    }
}

基本的な記述方法以外で間違えるとしたら、「0が表示されない」が多いかと思います。
問題文では「0まで」と指定しているので0が表示されていないといけません。
例ではfor文の条件式が間違っています。
8行目の「>」は「>=」、12行目の「<」は「<=」が正しい記述です。


  

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search