Java暑期学习第四十三天日报

一、今日学习内容:

今天继续练习实验三的习题。

二、遇到的问题:

三、明日计划:

明天练习实验四的内容。

 

今日练习内容:

3.日期类

定义一个日期类Date,私有数据成员有:int型变量year, month, day。公有函数成员有:

  1. int isleap()判断year是否为闰年,若是返回1,否则返回0;

  2. int check()判断日期是否合法,若合法返回1,否则返回0;

  3. void setdate()设置year,month,day的值;

  4. void display()按 “年-月-日”的格式输出日期,判断是否合法,若不合法输出Error Date,若合法,输出是否是闰年的信息;

  5. (附加)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");
         

    }

}

测试截图:

 

posted on 2020-08-17 20:57  桑榆非晚柠月如风  阅读(97)  评论(0编辑  收藏  举报