Tips

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

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

今までは選択問題だけ扱ってきましたが、今回より実際にプログラムを作成する問題も出題していきたいと思います!
この出題形式に関しては答えは1つではありません。
回答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正解として下さい。
(※2017/8/9間違い例を追加しました。)

問題

int型の変数nの値に応じて出力結果が変わるプログラムを作成せよ。
また、出力される文言は以下の通り。
nが0の場合 →「0です」
nが正の場合 →「正です」
nが負の場合 →「負です」

解答例1
package exercise;

public class Exercise_001 {
    public static void main(String[] args) {
        int n = 10;
        if (n == 0) {
            System.out.println("0です");
        } else if (n > 0) {
            System.out.println("正です");
        } else {
            System.out.println("負です");
        }
    }
}

解答例2
package exercise;

public class Exercise_001 {
    public static void main(String[] args) {
        int n = 10;
        String str;
        if (n == 0) {
            str = "0です";
        } else if (n > 0) {
            str = "正です";
        } else {
            str = "負です";
        }
        System.out.println(str);
    }
}

複数回System.out.println()を書きたくないので、個人的にはこちらの方が好みです。


間違い例

package exercise;

public class Exercise_001 {
    public static void main(String[] args) {
        int n = 10;
        String str; // 初期化されていない
        if (n == 0) {
            str = "0です";
        } else if (n > 0) {
            str = "正です";
        } else if(n < 0) { //「else」ではなく「else if」になっている
            str = "負です";
        }
        System.out.println(str);
    }
}

この場合、変数strが初期化されない可能性があるためコンパイルエラーです。
解答例と違っている点は、負の場合の処理がelseではなくelse ifで書かれているところです。
elseブロックがない場合、すべての分岐を通らない可能性が出てくるため、strが初期化されない可能性が出てきてしまいます。


  

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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search