1.
1.0版本,使用面对过程思维去解决问题,基础的思维
小提示:1900年是日历开始的初始年份:闰年366天,平年365天,大月31天,小月30天,闰年2月29天,平年2月28天
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scanner.nextInt();
System.out.println("请输入月份:");
int month=scanner.nextInt();
//判断这个月有几天
int days;
if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
days=31;
}else if (month==2){
if (year%100==0&&year%4==0||year%400==0) days=29;
else days=28;
}else days=31;
System.out.println(month+"月"+days+"天");
//计算总的年数
int yearsum=0;
for (int i = 1900; i <year; i++) {
if ((i%100!=0&&i%4==0||i%400==0)){
yearsum+=366;
}else yearsum+=365;
}
System.out.println(yearsum);
//计算总的月数
int monthsum=0;
for (int i = 1; i < month; i++) {
if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
monthsum+=31;
}else if (i==2){
if (year%100!=0&&year%4==0||year%400==0) monthsum+=29;
else monthsum+=28;
}else monthsum+=30;
}
System.out.println(monthsum);
//使用三元运算符,判断是不是周日
int week=((yearsum+monthsum+1)%7==0)?7:(yearsum+monthsum+1)%7;
System.out.println(year+"年"+month+"月1号是周"+week);
//打印
//1.先打印格式和空格
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int i = 1; i <week ; i++) {
System.out.print("\t");
}
//2.再打印日期
for (int i = 1; i <= days; i++) {
System.out.print(i+"\t");
if ((yearsum+monthsum+i)%7==0){
System.out.println();
}
}
}
运行结果:
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
2.
2.0版本,逐渐从面向过程升级,使用函数把相同的部分独立出来,这样就可以减少代码量,并且减少函数的程序的重用,增加可读性-------使用方法
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
public class Wannianlli1 {
public static void main(String[] args) {
//加工过之后的代码
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个年份");
int year=scanner.nextInt();
System.out.println("请输入一个月份");
int month=scanner.nextInt();
//计算大小月
int days=0;
days=getDaysMonth(month,year);
System.out.println(days);
//计算年
int yearSum=0;
for (int i = 1900; i <year ; i++) {
yearSum+=isPingRun(i)?366:365;
}
System.out.println(yearSum);
//计算月
int monthSum=0;
for (int i = 1; i <month ; i++) {
monthSum+=getDaysMonth(i,year);
}
System.out.println(monthSum);
int week=(yearSum+monthSum+1)%7==0?7:(yearSum+monthSum+1)%7;
//打印
//1.打印空格
System.out.println("一\t二\t三\t四\t五\t六\t日\t");
for (int i = 0; i <week-1 ; i++) {
System.out.print("\t");
}
//打印日期
for (int i = 1; i <=days ; i++) {
System.out.print(i+"\t");
if ((yearSum+monthSum+i)%7==0) System.out.println();
}
}
/*
该方法用来判断是平年还是闰年
*/
public static boolean isPingRun(int year){
boolean bool=false;
if (year%100!=0&&year%4==0||year%400==0){
bool=true;
}
return bool;
}
/*
该方法用来获得输入月份的天数;
*/
public static int getDaysMonth(int month,int year){
int days=0;
if (month==4||month==6||month==9||month==11){
days=30;
}else if (month==2){
days=isPingRun(year)?29:28;
}else days=31;
return days;
}
}
运行结果:
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
3.
3.0版本更新,使用面对对象的思维调用类,使用对象调用方法来进行计算
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
public static void test6(){
System.out.println("请输入一个日期:");
//获取用户输入时间
String st=new Scanner(System.in).next();
//将用户输入的字符串类型转换为时间类型
java.sql.Date dt=java.sql.Date.valueOf(st);
//获取当前时间//获取用户输入的当前时间
Calendar instance = Calendar.getInstance();
instance.setTime(dt);
//获取用户输入月份的最大天数//获取用户输入的月份的1号是周几
int days=instance.getActualMaximum(Calendar.DATE);
//获取1号是周几
instance.set(Calendar.DATE,1);
int week=instance.get(Calendar.DAY_OF_WEEK);
//打印空格
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
for (int i = 1; i <=week-1 ; i++) {
System.out.print("\t");
}
//打印日期
for (int i = 1; i <=days ; i++) {
System.out.print(i+"\t");
//获得第i天是一周的第几天 //如果是是一周的第7天就换行
instance.set(Calendar.DATE,i);
if (instance.get(Calendar.DAY_OF_WEEK)==7){
System.out.println();
}
}
}
运行结果:
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’