一、今日学习内容:
今天继续练习实验三的习题。
二、遇到的问题:
无
三、明日计划:
明天练习实验四的内容。
今日练习内容:
3.日期类
定义一个日期类Date,私有数据成员有:int型变量year, month, day。公有函数成员有:
-
int isleap()判断year是否为闰年,若是返回1,否则返回0;
-
int check()判断日期是否合法,若合法返回1,否则返回0;
-
void setdate()设置year,month,day的值;
-
void display()按 “年-月-日”的格式输出日期,判断是否合法,若不合法输出Error Date,若合法,输出是否是闰年的信息;
-
(附加)void calendarprint()函数打印当月日历,格式为(以2014年4月日历为例)
import java.util.Scanner; public class Date { private int year; private int month; private int day; public static void main(String []args) { Scanner sc=new Scanner(System.in); System.out.println("请输入年月日:"); int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); Date d=new Date(); d.setvalue(a, b, c); d.display(d); d.clanderprint(); } public void setvalue(int a,int b,int c){ year=a; month=b; day=c; } public int islaep() { int result=0; if((year%100!=0&&year%4==0)||year%400==0) result=1; else result=0; return result; } public int check() { if (year < 0) return 0; if (month < 1 || month > 12) return 0; if (day < 1 || day > 31) return 0; int maxDay = 31; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { maxDay = 31; } else if (month == 2) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { maxDay = 29; } else { maxDay = 28; } } else { maxDay = 30; } if(day>maxDay) return 0; return 1; } public void display(Date d) { int i=d.check(); int r=d.islaep(); if(i==1) { if(r==1) System.out.println("该年是闰年,该日期是:"+d.year+"-"+d.month+"-"+d.day); if(r==0) System.out.println("该年是平年,该日期是:"+d.year+"-"+d.month+"-"+d.day); } if(i==0) { System.out.println("error date!"); } } public void clanderprint() { int maxDay = 31; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { maxDay = 31; } else if (month == 2) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { maxDay = 29; } else { maxDay = 28; } } else { maxDay = 30; } int count = 0; //定制计数标记 System.out.println("\n"+year+"年"+month+"月的日历如下:"); System.out.print("Su\tMo\tTu\tWe\tTh\tFr\tSa"); //j从1开始 到这个月的天数结束 for(int j = 1 ; j <= maxDay ; j ++){ count++; //每打印七天就换行 if(count % 7 == 1){ System.out.print("\n"); } //打印天数 System.out.print(j+"\t"); } //打印完日历换行 System.out.println("\n"); } }
测试截图: