LoginSignup
0
0

More than 3 years have passed since last update.

Rubyで月の日数を当てるプログラムを作ってみた

Last updated at Posted at 2021-02-20

はじめに

私は、勉強のアウトプットとしてミニアプリをつくったりします。今回は、少し複雑な条件分岐を用いて閏年を当てるプログラムを書きました。備忘録として残りしたいと思いますので宜しくお願いします。

閏年になる場合を加味する

Googleぐぐるとトップに出てきますが、
①西暦年が4で割り切れる年は閏年
②ただし、西暦年が100で割り切れる年は平年
③ただし、西暦年が400で割り切れる年は閏年
とこの三つの条件分岐があるみたいです!

さて早速、プログラミングを組んでいきます。

早速コードを書きます!

2月の日付のみ条件分岐にかけます。
理由としては、2月だけ日付の変動があるからです。

def get_days(year, month)
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  # month_daysに予め配列で1~12月までの日数を入れておきます。

  if month == 2 #2月を選んだ場合のみ、条件分岐にかけます。
    if year % 4 == 0 #4で割り切れる場合は、さらに条件分岐にかけます。
      if year % 100 == 0 && year % 400 != 0 #100で割り切れて、400で割り切れない場合の条件分岐です。
        days = 28
      else
        days = 29
    end
  else
    days = 28
  end
  else
    days = month_days[month - 1]
  end
return days
end

puts "年を入力してください:"
year = gets.to_i
puts "月を入力してください:"
month = gets.to_i

days = get_days(year, month)
puts "#{year}#{month}月は#{days}日間あります"


完成しました!

Javaでも作ってみた

しかし、今のJavaの知識では同じプログラムは作れず。
Googleの記事に上がっていたコードを参考にしました。


public class LeapYear1 {
    public static void main(String[] args) {
        int year = 2020;
        boolean check = false;

        if (year % 4 == 0) {
            if ((year % 100 ) == 0) {
                if ((year % 400 ) == 0) {
                    check = true; //閏年
                }
            }else {
                check = true; //閏年
            }
        }
        System.out.println(check ? "閏年です。" : "閏年ではありません。");
    }
}

閏年の判定ができるプログラムになりました。

最後に

Rubyだけではなく、Javaでもプログラムが組めるように徐々にやっていきたいなと思います。
ここまで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0