📄 calender.java
字号:
/**打出日历*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Calender {
public static void main(String args[]){
try{BufferedReader input=new BufferedReader
(new InputStreamReader(System.in));
String s="";int year,month;
boolean wrong =true;
while(wrong){
System.out.println("整年日历(a)还是某年某月的日历(p)");
s=input.readLine();
if(s.equalsIgnoreCase("a")){
System.out.println("输入年份:");
year=Integer.parseInt(input.readLine());
if(year<0)throw new InputException();
calender1(year);wrong=false;
}else if(s.equalsIgnoreCase("p")){
System.out.println("输入年份:");
year=Integer.parseInt(input.readLine());
if(year<0)throw new InputException();
System.out.println("输入月份:");
month=Integer.parseInt(input.readLine());
if(month>12)throw new MonthException();
calender2(year,month);wrong=false;
}else {
System.out.println("错误!!!!!!");
wrong=false;
}
}
}catch(InputException e1){
System.out.println(e1.getMessage());
System.exit(0);
}catch(MonthException e2){
System.out.println(e2.getMessage());
System.exit(0);
}catch(Exception e){
System.out.println(e.getMessage());
System.exit(0);
}}public static boolean leapyear(int i){
boolean leapyear;
if(i%400==0|(i%100!=0&i%4==0))
leapyear=true;
else leapyear=false;
return leapyear;
}public static void calender1(int year){
int day=getday(year);
int[] a=new int[12];
a[0]=a[2]=a[4]=a[6]=a[7]=a[9]=a[10]=a[11]=31;
a[3]=a[5]=a[8]=a[10]=30;
if(leapyear(year))a[1]=29;
else a[1]=28;
System.out.println("公元 "+year+" 年 ");
for(int i=0;i<a.length;i++){
System.out.println(change(i+1)+" 月 ");
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int j=0;j<day;j++)
System.out.print(" \t");
for(int k=0;k<a[i];k++){
System.out.print((k+1)+"\t");
if((k+1+day)%7==0)System.out.println();
}System.out.println();
day=(day+a[i])%7;
}
}public static void calender2(int year,int month){
int day=days(year);int week=0;int sum;int weekday;
int[] a=new int[12];
a[0]=a[2]=a[4]=a[6]=a[7]=a[9]=a[10]=a[11]=31;
a[3]=a[5]=a[8]=a[10]=30;
if(leapyear(year))a[1]=29;
else a[1]=28;
for(int i=0;i<month;i++)
week+=a[i];
sum=day+week;
weekday=sum%7+1;
int x=-(weekday-1);
System.out.print("公元 "+year+" 年 ");
System.out.println(change(month)+" 月 ");
System.out.println();
int [][] b=new int[6][7];
for(int i=0;i<b.length;i++)
for(int j=0;j<b[i].length;j++)
{
b[i][j]=x++;//System.out.println(b[i][j]);
}
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=0;i<b.length;i++)
{for(int j=0;j<b[i].length;j++)
if(b[i][j]<=0)System.out.print(" \t");
else if(b[i][j]>0&b[i][j]<=a[month-1])
System.out.print(b[i][j]+"\t");
System.out.println();}
}public static int days(int year){
int sum;sum=365*(year-1);
int m=0;
for(int i=1;i<=year;i++)
if(leapyear(i))m++;
return (sum+m);
}public static String change(int month){
String result=null;
switch(month){
case 1:result="一";break;
case 2:result="二";break;
case 3:result="三";break;
case 4:result="四";break;
case 5:result="五";break;
case 6:result="六";break;
case 7:result="七";break;
case 8:result="八";break;
case 9 :result="九";break;
case 10:result="十";break;
case 11:result="十一";break;
case 12:result="十二 ";break;
}return result;
}public static int getday(int n){
int m=days(n);
m=m%7+1;
return m;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -