山东大学软件专业大一作业(上学期)作业六

public class Calendar {
//	由键盘输入年份,编写一个程序显示当年的日历,
//  用Application程序实现。
//  熟练掌握一维及二维数组的使用
	private int year;
	private int month;
	int t;
	public Calendar() {}
	public Calendar(int year,int month) {
		this.year = year;
		this.month = month;
	}
	//以2001年1月1日为起点,算出所需年份的第一天是星期几
	public int startweekday() {
		t=(year-1)+((year-1)/4-(year-1)/100+(year-1)/400);
		return (t%7+1);
	}
	//算出所需月份的第一天是星期几
     public int monthweekday() {
    	 Calendar c = new Calendar(year,month);
    	 int start = c.startweekday();
    	 int start1;
    	 if(year/400 !=0) {
 			if(month == 1) {
 				start1 = start;
 			}else if(month==2) {
 				start1 = (start + 31%7)%7;
 				return start1;
 			}else if(month <=7){
                 int m1 = (month-2)/2;
                 if( (month-2)%2 == 0){
                 	start1 = ((31 + 28 + 31*m1 + (m1 - 1)*30)%7  +start)%7;
                 	return start1;
                 }else {
                 	start1 = ((31 + 28 + 31*m1 +30*m1)%7 + start)%7;
                 	return start1;
                 }
 			}else {
 				int m2 = 28 + 30*2 + 31*4;
 				int m1 = (month-7)/2;
 				if( (month-7)%2 == 0){
                 	start1 = ((m2 + 31*m1 + (m1 - 1)*30)%7 + start)%7;
                 	return start1;
                 }else {
                 	start1 = (start + (m2 + 31*m1 +30*m1)%7)%7;
                 	return start1;
                 }
 				
 			}
 		}else {
 			if(month == 1) {
 				start1 = start;
 			}else if(month==2) {
 				start1 = (start + 31%7)%7;
 				return start1;
 			}else if(month <=7){
                 int m1 = (month-2)/2;
                 if( (month-2)%2 == 0){
                 	start1 = ((31 + 28 + 31*m1 + (m1 - 1)*30)%7  +start)%7;
                 	return start1;
                 }else {
                 	start1 = ((31 + 28 + 31*m1 +30*m1)%7 + start)%7;
                 	return start1;
                 }
 			}else {
 				int m2 = 28 + 30*2 + 31*4;
 				int m1 = (month-7)/2;
 				if( (month-7)%2 == 0){
                 	start1 = ((m2 + 31*m1 + (m1 - 1)*30)%7 + start)%7;
                 	return start1;
                 }else {
                 	start1 = (start + (m2 + 31*m1 +30*m1)%7)%7;
                 	return start1;
                 }
 				
 			}
 		}
    	 return 1000000000;
     }
     //打印日历
	public void print() {
		System.out.print("日"+" "+"一"+" "+"二"+" "+"三"+" "+"四"+" "+"五"+" "+"六");
		System.out.println();
    	 Calendar c = new Calendar(year,month);
    	 int monthstart = c.monthweekday();
    	 int[][] mon = new int[6][7] ; 
    	 int date = 0;
    	for( int i = 0;i<6;i++) {
    		for(int j = 0;j<7;j++) {
    			if(i == 0 & j<monthstart) {
    				mon[i][j] = 0;
    				System.out.print("   ");
					  }else { 
						  date = date +1;
						  if(date > 31) { break; }
						  mon[i][j] = date;
						  if(date < 10) {
						  System.out.print(mon[i][j] + "  ");
						   }else {
							   System.out.print(mon[i][j] + " ");
						   }
					  }
    		}
    		System.out.println();
    	}
    	
     }
    

}

import java.util.Scanner;

public class test {
//	由键盘输入年份,编写一个程序显示当年的日历,
//    用Application程序实现。
//    熟练掌握一维及二维数组的使用
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入年份");
		int y = in.nextInt();
		System.out.println("请输入月份");
		int m = in.nextInt();
		Calendar c = new Calendar(y,m);
	    c.print();
		
		
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值