java—日历

java—日历的编写(不使用java类)

计算所输入的(year,month-1)末到1800年的总天数

public static int getTotalNumberOfDays(int year,int month) {
        int totalNumberOfDays = 0;
        for (int i = 1800; i < year; i++)
        {
            if (i%4==0&&i%100!=0||i%400==0)
            {//闰年
                totalNumberOfDays += 366;
            }
            else {
                totalNumberOfDays += 365;
            }
        }
        for (int i = 1; i <month; i++) {
            totalNumberOfDays+= getNumberOfDaysInMonth(year,i);
        }
        return totalNumberOfDays;
    }

计算所输入的某月的天数

public static int getNumberOfDaysInMonth(int year,int month){
        int daysInMonth;		
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            daysInMonth=31;
        }else if(month==2){
            if((year%4==0&&year%100==0)||year%400==0){
                daysInMonth=29;
            }else
                daysInMonth=28;
        }else {
            daysInMonth = 30;
        }
        return daysInMonth;
    }

计算所输入(year,month)1号到1800年的总天数

totalNumberOfDays=getTotalNumberOfDays(year,month)+1;

计算month月的第一天是周几

getStartDay=(totalNumberOfDays%7+(startDay1800-1))%7; 

完整代码

import java.util.Scanner;
public class Cal {
    public static void main(String[] args){
        int startDay1800=3;
        int getStartDay;
        int totalNumberOfDays;
        int daysInMonth;
        int n=0;
        //读取
        Scanner input=new Scanner(System.in);
            //键盘输入年份
        System.out.print("Enter full year(e.g..2011):");
        int year=input.nextInt();
            //键盘输入月份
        System.out.print("Enter month in number between 1 and 12:");
        int month=input.nextInt();
        //打印
        //打印标题
        printMonthTitle(month);
        System.out.println(" "+year);
        System.out.println("---------------------------");
        System.out.println("Sun"+"\t"+"Mon"+"\t"+"Tue"+"\t"+"Wed"+"\t"+"Thu"+"\t"+"Fri"+"\t"+"Sat");
        //打印日历内容
        //输出到1800年的总天数
        totalNumberOfDays=getTotalNumberOfDays(year,month)+1;
        daysInMonth=getNumberOfDaysInMonth(year,month);
        getStartDay=(totalNumberOfDays%7+(startDay1800-1))%7;
        n=getStartDay;
        for(int m=0;m<getStartDay;m++){
            System.out.print("\t");
        }
        for(int day=1;day<=daysInMonth;day++) {
             System.out.print(day+"\t");
             n++;
             if (n % 7 == 0) {
                 System.out.println();
             }
        }
    }
    //打印标题
    public static void printMonthTitle(int n){
        String month=null;
        switch(n){
            case 1:month="January";break;
            case 2:month="February";break;
            case 3:month="March";break;
            case 4:month="April";break;
            case 5:month="May";break;
            case 6:month="June";break;
            case 7:month="July";break;
            case 8:month="August";break;
            case 9:month="September";break;
            case 10:month="October";break;
            case 11:month="November";break;
            case 12:month="December";break;
        }
        System.out.print("\t"+"\t"+month);
    }
    //总天数
    public static int getTotalNumberOfDays(int year,int month) {
        int totalNumberOfDays = 0;
        for (int i = 1800; i < year; i++)
        {
            if (i%4==0&&i%100!=0||i%400==0)
            {//闰年
                totalNumberOfDays += 366;
            }
            else {
                totalNumberOfDays += 365;
            }
        }
        for (int i = 1; i <month; i++) {
            totalNumberOfDays+= getNumberOfDaysInMonth(year,i);
        }
        return totalNumberOfDays;
    }
    //月份的天数
    public static int getNumberOfDaysInMonth(int year,int month){
        int daysInMonth;
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            daysInMonth=31;
        }else if(month==2){
            if((year%4==0&&year%100==0)||year%400==0){
                daysInMonth=29;
            }else
                daysInMonth=28;
        }else {
            daysInMonth = 30;
        }
        return daysInMonth;
    }
}

结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值