プログラミング一日目(JAVA)
どうも、スクエアです。
会社で使うJAVAの勉強中です。
Paizaラーニングを使ってスキルランク上げなう。
JAVAの問題集があるPaizaは分かりやすくて良いですね。
現在はなんとCランク!!!!! (雑魚ですはい。)
今週中にはBランクに上がりたいところ。
こつこつ頑張っていこう。(´_ゝ`)
今日書いたプログラムは、
西暦y年m月d日が何曜日か表示するもの。
import java.util.*; public class Main { static boolean isLeap(int year) { return year % 400 == 0 || year % 100 != 0 && year % 4 == 0; } //年月 static int lastDay(int year, int month) { switch (month) { case 4: case 6: case 9: case 11: return 30; case 2: if (isLeap(year)) { return 29; } else { return 28; } default: return 31; } } static int[] nextDate(int year, int month, int day) { day ++; if (day > lastDay(year, month)) { day = 1; month ++; } if (month > 12) { month = 1; year ++; } return new int[]{year, month, day}; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = sc.nextInt(); int month = sc.nextInt(); int day = sc.nextInt(); //曜日 int count = 0; int y = 1800, m = 1, d = 1; while (!(y == year && m == month && d == day)) { int[] date = nextDate(y, m, d); y = date[0]; m = date[1]; d = date[2]; count ++; } // 曜日 String[] day_of_weeks = {"水", "木", "金", "土", "日", "月", "火"}; System.out.println(day_of_weeks[count % 7] + "曜日"); } }
最初に閏年や月によって日が少なかったりする時(2月や6月など)を定義。
次に31日から1日になると月が+1され、12月から1月になると年が+1になるコードを記載。
最後に初期値1800年1月1日から+1ずつカウントしていき、7で割った余りに応じて曜日を決めるコードを
書いて完成!
入力例1 2019 4 8 出力例1 月曜日