实用java完成万年历的制作

完成万年历的制作需要用到数组、循环等知识

编程计算输入的月份距离1900年1月1日的天数,求出当前月之前的总天数(不包含当前输入月分的天数,)

编程计算输入月份的第一天是星期几,(公式:星期几=1+天数差%7)


import java.util.Scanner;
public class Calendar{
	
	public static void main(String[] args){
		
		int year;
		int month;
		int totaldays=0;
		
		Scanner sc=new Scanner(System.in);
		
		System.out.println("请输入年");
		year=sc.nextInt();
		System.out.println("请输入月");
		month=sc.nextInt();
		
		
		//计算年的总天数
		for(int i=1900;i<year;i++){
			if((i%400==0)||(i%4==0&&i%100!=0)){
				totaldays+=366;
			}else{
				totaldays+=365;
			}
		}
		
		//距离1900年1月1好的总天数
		totaldays+=monthdays(month,year);
		//System.out.println(totaldays);
		System.out.println("-------------"+year+"年"+month+"月日历为---------------");
		//开头
		System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
		
		//该月第一天是星期几,星期几前面就空几格
		int x=1+totaldays%7;
		
		if(x==7){
			x=0;
		}
		for(int i=0;i<x;i++){
			System.out.print("  \t");
		}
		
		int days=monthday(month,year);
		
		int i=1;
		while(i<=days){
			System.out.print(i+"     \t");
			if((i+x)%7==0){
				System.out.println();
			}
			i++;
		}
		
	}
	//月份总天数
	public static int monthdays(int month,int year){
		int totaldays=0;
		for(int i=1;i<month;i++){
			totaldays+=monthday(i,year);
		}
		return totaldays;
	}
	
	//某月天数
	public static int monthday(int month,int year){

		if((year%400==0)||(year%4==0&&year%100!=0)){
			int[] arr={0,31,29,31,30,31,30,31,31,30,31,30,31};
			return 	arr[month];	
		}else{
			int[] arr={0,31,28,31,30,31,30,31,31,30,31,30,31};
			return arr[month];
		}
	
	}
	
}



  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值