打印日历java

根据用户的输入年月打印这个月的日历表,Java的简单实现。
//根据用户输入打印某年某月的日历
import java.util.Scanner;
public class EasyCalendar {
	static int month;
	static int year;
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		year=in.nextInt();
		month=in.nextInt();
		int sum=f(year,month);
		calendar(sum+1);
	}
	private static void calendar(int sum) {
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		int newDay=sum%7;            //判断这月的第一天是星期几
		//输出这个月第一天前的所有空格
		for(int i=1;i<=newDay;i++) {
			System.out.print("\t");
		}
		//输出所有的日期
		for(int i=1;i<=fa(month);i++) {
			if(sum%7==6) {            //碰到星期六需要换行
				System.out.print(i+"\n");
			}else
			System.out.print(i+"\t");
			sum++;
		}
	}
	
	//、求剩余月的总天数
	private static int fa(int i) {
		int sum3=0;
			if(i==2) {
				if(leapYear(year)) {
					sum3+=29;
				}else
					sum3+=28;
			}else
				if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {
					sum3+=31;
				}else
					sum3+=30;
		return sum3;
	}
	
	//、求输入的年到今年的整年总天数
	private static int f(int year, int month) {
		int sum=0;
		for(int i=1900;i<year;i++) {
			if(leapYear(i)) {
				sum+=366;
			}else
				sum+=365;
		}
		for(int i=1;i<month;i++) {
			if(i==2) {
				if(leapYear(year)) {
					sum+=29;
				}else
					sum+=28;
			}else
				if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {
					sum+=31;
				}else
					sum+=30;
		}
		//sum+=day;
		return sum;
	}
	
	//、判断瑞年
	private static boolean leapYear(int year) {
		return year%4==0&&year%100!=0||year%400==0;
	}
}

发布了36 篇原创文章 · 获赞 50 · 访问量 9774

猜你喜欢

转载自blog.csdn.net/qq_41765969/article/details/89107504