java打印日历

编写一个日历(给定年月,输出如下形式)

package com.lan.exercise20170604; import java.util.Scanner; public class Calendar { public static void main(String[] args) { // TODO Auto-generated method stub int year,month,day; int firstyear=1990; int firstmonth=1; int firstday=1; int daylocation=0; int sumDay=0; Scanner reader=new Scanner(System.in); //读入年月日: System.out.println("请输入年 月 日:"); year=reader.nextInt(); month=reader.nextInt(); //求相差月 day=reader.nextInt(); sumDay=TheDaysbeforeThisYear(year);//求今年不包括今年到1990-1-1一共有多少天 // System.out.println("sumDay="+sumDay); //再加上今年的天数 sumDay+=TheDaysbeforeThisMonth(year,month,day); //求出当日在今年的第几天 // int sumDay2=TheDaysbeforeThisMonth(year,month,day); // System.out.println("sumDay2="+sumDay2); //求出当月天数 int daysofthismonth=TheDaysOfThisMonth(year,month); // System.out.println("daysofthismonth="+daysofthismonth); // System.out.println("这一年之前到1990-1-1到"+sumDay+"天"); //计算本月1号距离1990-1-1多少天 int firstdayofthismonth=sumDay-day+1;//计算本月的第一天 //输出当天的星期: // System.out.println("今天星期"+sumDay%7); //输出当天所在月份的1号的星期 // System.out.println(month+"月"+"是星期"+firstdayofthismonth%7); int nulllocation=firstdayofthismonth%7-1;//日历前面的空值 int[][] calendar=new int[6][7]; //存储日期 int day2=0; int j=0; int k=nulllocation; for(int i=firstdayofthismonth;i<firstdayofthismonth+daysofthismonth;i++) { day2=(i-firstdayofthismonth+1); // System.out.println(day2+"日是星期"+i%7); calendar[j][k]=day2;//存储日期位置 k++; if(i%7==0) { j++; k=0; } } System.out.println("\t\t "+year+"年"+month+"月"+day+"日"+"\t是星期"+getweek((sumDay-1)%7)); //输出星期 for(int n=0;n<=calendar.length;n++) { switch(n) { case 0: System.out.print("一"+"\t"); break; case 1: System.out.print("二"+"\t"); break; case 2: System.out.print("三"+"\t"); break; case 3: System.out.print("四"+"\t"); break; case 4: System.out.print("五"+"\t"); break; case 5: System.out.print("六"+"\t"); break; case 6: System.out.print("日"+"\t"); break; } } System.out.println();//换行 //输出日期 for(int i=0;i<calendar.length;i++) { for(int m=0;m<calendar[i].length;m++) { if(calendar[i][m]==0) { System.out.print(" "+"\t"); } else System.out.print(calendar[i][m]+"\t"); } System.out.println(); } /*daylocation=TheDaysbeforeThisMonth(year,month,day); System.out.println(" "+year+"年"+month+"月"+day+"日"); //System.out.println("这是这一年的第"+daylocation+"天"); * * */ } static String getweek(int n)//返回今天的星期 { String str=null; switch(n) { case 0: str="一"; case 1: str="二"; break; case 2: str="三"; break; case 3: str="四"; break; case 4: str="五"; break; case 5: str="六"; break; case 6: str="日"; break; } return str; } static int TheDaysbeforeThisYear(int year1) { //求今年不包括今年到前面的那些年一共有多少天 int sumDay1=0; for(int i=1990;i<=year1-1;i++)//判断其中有多少闰年->从而知道距离1990-1-1有多少天 { sumDay1+=365; if(isLeapYear(i))//如果是闰年多加一天 { // System.out.print("这之间的闰年为"+i); // System.out.print(isLeapYear(i)+"\n"); sumDay1++; } } return sumDay1; } //函数 //判断是不是闰年 static boolean isLeapYear(int year1) { return((year1%4==0&&year1%100!=100)||year1%400==0); } static int TheDaysOfFebruary(boolean isleapyear) { if(isleapyear)//是闰年返回29 return 29; return 28;//不是闰年返回28 } //求当月日期 static int TheDaysOfThisMonth(int year1,int month1) { int daysOfThisMonth=0; switch(month1) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: daysOfThisMonth=31; break; case 2: daysOfThisMonth=TheDaysOfFebruary(isLeapYear(year1)); break; case 4: case 6: case 9: case 11: daysOfThisMonth=30; break; } return daysOfThisMonth; } //当日在今年第几天 static int TheDaysbeforeThisMonth(int year1,int month1,int day1) { int b=0; int a=TheDaysOfThisMonth(year1,month1); for(int i=1;i<month1;i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: // case 12:// a=31; break; case 2: a=TheDaysOfFebruary(isLeapYear(year1)); break; case 4: case 6: case 9: case 11: a=30; break; } b=b+a; // System.out.println(b); } b=b+day1; return b; } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值