显示每月第一天是星期几
输入年份
import java.util.*;
import javax.swing.*;
class Main {
public static void main (String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter year: (e.g., 2008): ");
int yearNotChange = input.nextInt();
String yearString = yearNotChange + "";
int month = 0;
int oneDayOfMonth = 1;
for(int i = 1; i <= 12; i++){
int year = yearNotChange;
month = i;
if(month == 1 || month == 2){
month += 12;
year -= 1;
}
int dayOfWeek = (oneDayOfMonth + (int)((26 * (month + 1)) / 10)
+ (year % 100) + (int)((year % 100) / 4)
+ (int)((int)(year / 100) / 4)
+ 5 * (int)(year / 100)) % 7;
String dayOfWeekString = "";
switch(dayOfWeek){
case 0:
dayOfWeekString = "Saturday";
break;
case 1:
dayOfWeekString = "Sunday";
break;
case 2:
dayOfWeekString = "Monday";
break;
case 3:
dayOfWeekString = "Tuesday";
break;
case 4:
dayOfWeekString = "Wednesday";
break;
case 5:
dayOfWeekString = "Thursday";
break;
case 6:
dayOfWeekString = "Friday";
break;
}
String monthString = "";
switch(i){
case 1:
monthString = "January";
break;
case 2:
monthString = "February";
break;
case 3:
monthString = "March";
break;
case 4:
monthString = "April";
break;
case 5:
monthString = "May";
break;
case 6:
monthString = "June";
break;
case 7:
monthString = "July";
break;
case 8:
monthString = "Augest";
break;
case 9:
monthString = "September";
break;
case 10:
monthString = "October";
break;
case 11:
monthString = "November";
break;
case 12:
monthString = "December";
break;
}
System.out.println(monthString + " 1, " + yearString +" is " + dayOfWeekString);
}
}
}
显示日历
制表格\t真是个神奇的东西,觉得自己做不出来,结果竟然做出来了,但是感觉程序还是乱七八糟的。希望下次看程序的时候不要一头雾水。
import java.util.*;
import javax.swing.*;
class Main {
public static void main(String[] args){
//获得年份
Scanner input = new Scanner(System.in);
System.out.print("Enter year: (e.g., 2008): ");
int yearNotChange = input.nextInt();
//打印12个月的日历
for(int i = 1; i <= 12;i++){
//计算每月1号星期几
int year = yearNotChange;
int month = i;
int oneDayOfMonth = 1;
if(month == 1 || month == 2){
month += 12;
year -= 1;
}
//0-星期六 1-星期天 2-星期一... 6-星期五
int dayOfWeek = (oneDayOfMonth + (int)((26 * (month + 1)) / 10)
+ (year % 100) + (int)((year % 100) / 4)
+ (int)((int)(year / 100) / 4)
+ 5 * (int)(year / 100)) % 7;
//输出每月台头
String title = "";
switch(i){
case 1:
title = "\t\tJanuary " + yearNotChange;
break;
case 2:
title = "\t\tFebruary " + yearNotChange;
break;
case 3:
title = "\t\tMarch " + yearNotChange;
break;
case 4:
title = "\t\tApril " + yearNotChange;
break;
case 5:
title = "\t\tMay " + yearNotChange;
break;
case 6:
title = "\t\tJune " + yearNotChange;
break;
case 7:
title = "\t\tJuly " + yearNotChange;
break;
case 8:
title = "\t\tAugest " + yearNotChange;
break;
case 9:
title = "\t\tSeptember " + yearNotChange;
break;
case 10:
title = "\t\tOctober " + yearNotChange;
break;
case 11:
title = "\t\tNovember " + yearNotChange;
break;
case 12:
title = "\t\tDecember " + yearNotChange;
break;
}
System.out.print("\n" + title);
System.out.print("\n----------------------------");
System.out.print("\nSun\tMon\tTue\tWed\tThu\tFri\tSat\n");
//计算每月多少天
int daysOfMonth = 0;
switch(i){
case 1:
daysOfMonth = 31;
break;
case 2:
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
daysOfMonth = isLeapYear ? 29 : 28;
break;
case 3:
daysOfMonth = 31;
break;
case 4:
daysOfMonth = 30;
break;
case 5:
daysOfMonth = 31;
break;
case 6:
daysOfMonth = 30;
break;
case 7:
daysOfMonth = 31;
break;
case 8:
daysOfMonth = 31;
break;
case 9:
daysOfMonth = 30;
break;
case 10:
daysOfMonth = 31;
break;
case 11:
daysOfMonth = 30;
break;
case 12:
daysOfMonth = 31;
break;
}
/*计算第一行空几天 dayOfWeek
0-星期六-6 (0/1/2/3/4/5/6 + 6)% 7
*/
int count = (dayOfWeek + 6) % 7;
//输出第一行空的列数
for(int j = 1; j <= count; j++)
System.out.print("\t");
//每7天换行(加上空格)
for(int k = 1; k <= daysOfMonth; k++){
count++;
System.out.print((count % 7 == 0) ? k + "\n" : k + "\t");
}
}
}
}