プログラミング一日目(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
月曜日