打印任何年月的日历表(Java)

//打印指定月份的日历信息
import java.util.*;
public class PrintfCalender {
	public static void main(String[] args) {
		/*本来想用二维数组做,后经发现实现不了
		 * String [][] calender=new String[6][7]; String[]
		 * firstline={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; calender[0]=firstline;
		 * Scanner inScanner=new Scanner(System.in); //
		 * System.out.println(Arrays.toString(calender));这种二维打印出来的都是引用
		 * System.out.println(Arrays.deepToString(calender));
		 */
        
		 Scanner inScanner=new Scanner(System.in);
			System.out.println("输入年:");
			int a=inScanner.nextInt();
			System.out.println("输入月:");
			int b=inScanner.nextInt();
			int PING[]= {31,28,31,30,31,30,31,31,30,31,30,31};
			int RUN[]={31,29,31,30,31,30,31,31,30,31,30,31};
			//sumall为总天数对7取余的值  sum为这个月前的这一年天数  RUNDAY为闰年个数
		    int RUNDAY=0,sum=0,sumall=0;
		    for(int i=1900;i<a;i++) {
		    	if ((i%4==0&&i%100!=0)||(i%400==0))
		         RUNDAY++;	
		    }
		    
		    if (b>=2) {
		    	int only=1;
		    	//闰年时且月份大于1月时
		    	if ((a%4==0&&a%100!=0)||(a%400==0)) {
	    		for (int i = 0; i<b-1; i++) {
					sum+=RUN[i];
				}
	    		sumall=(366*RUNDAY+365*(a-1900-RUNDAY)+sum)%7;
	    		System.out.println("星期一 星期二 星期三 星期四 星期五 星期六 星期天");
	            for (int i = 0; i <sumall; i++) {
	            	System.out.print("     ");
				}
	            for (int i =sumall; i<7; i++) {
	             	System.out.print(String.format("%4d",only++));
	            	System.out.print(" ");
				}
	            System.out.println();
	        	while(only<=RUN[b-1]) {
		            for (int i = 0; i<5; i++) {
						for (int j =0; j<7&&only<=RUN[b-1]; j++) {
						 	System.out.print(String.format("%4d",only++));
						   	System.out.print(" ");
						}
						System.out.println();
					}
		        	}
	            
		    	}
		    	//平年时且月份大于1月时
		    	else {
		    		System.out.println("星期一 星期二 星期三 星期四 星期五 星期六 星期天");
		    		for (int i = 0; i<b-1; i++) {
						sum+=PING[i];
					}
		    		sumall=(366*RUNDAY+365*(a-1900-RUNDAY)+sum)%7;
		    		 for (int i = 0; i <sumall; i++) {
		    			 System.out.print("     ");
						}
			            for (int i =sumall; i<7; i++) {
			            	System.out.print(String.format("%4d",only++));
			            	System.out.print(" ");
						}
			            System.out.println();
			        	while(only<=PING[b-1]) {
			            for (int i = 0; i<5; i++) {
							for (int j =0; j<7&&only<=PING[b-1]; j++) {
							 	System.out.print(String.format("%4d",only++));
							   	System.out.print(" ");
							}
							System.out.println();
						}
			        	}
				}
				
			}
		    //任意年份1月的日历
	    	 else {
	    		 System.out.println("星期一 星期二 星期三 星期四 星期五 星期六 星期天");
	    		 int only=1;
	    		 sumall=(366*RUNDAY+365*(a-1900-RUNDAY))%7;
	    		 for (int i = 0; i <sumall; i++) {
	    			 System.out.print("     ");
					}
		            for (int i =sumall; i<7; i++) {
		             	System.out.print(String.format("%4d",only++));
		            	System.out.print(" ");
					}
		            System.out.println();
		        	while(only<=RUN[b-1]) {
			            for (int i = 0; i<5; i++) {
							for (int j =0; j<7&&only<=31; j++) {
							 	System.out.print(String.format("%4d",only++));
							   	System.out.print(" ");
							}
							System.out.println();
						}
			        	}
			}
		    
		    
		
		
		
		
	}
	

}

输入2000年5月
请添加图片描述

输入2022年3月
请添加图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Java 中的 `Calendar` 类来获取指定日历。以下是一个示例代码: ```java import java.util.Calendar; public class CalendarExample { public static void main(String[] args) { int year = 2022; int month = 1; // January (0 - 11) // Create a Calendar instance Calendar calendar = Calendar.getInstance(); // Set the year and month calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); // Get the number of days in the month int numDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); // Print the calendar System.out.println("Sun Mon Tue Wed Thu Fri Sat"); // Set the calendar to the first day of the month calendar.set(Calendar.DAY_OF_MONTH, 1); // Print the first week of the month int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; for (int i = 0; i < dayOfWeek; i++) { System.out.print(" "); } for (int i = 1; i <= 7 - dayOfWeek; i++) { System.out.printf("%3d ", i); } System.out.println(); // Print the remaining weeks of the month for (int i = 7 - dayOfWeek + 1; i <= numDays; i++) { System.out.printf("%3d ", i); if ((i + dayOfWeek - 1) % 7 == 0) { System.out.println(); } } } } ``` 在此示例中,我们使用 `Calendar.getInstance()` 方法创建了一个 `Calendar` 实例。然后,我们设置了份和份,并使用 `getActualMaximum()` 方法获取了该的天数。接下来,我们打印日历的表头,然后将日历设置为该的第一天,并打印了第一周。最后,我们打印了剩余的周。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值