[java]输入年份月份,显示对应月历

import java.util.Calendar;
import java.util.Scanner;


public class WNL {


public static void main(String[] args) {


Scanner input = new Scanner(System.in);
System.out.print("请输入年份 : ");
int year = input.nextInt();
System.out.print("请输入月份 : ");
int month = input.nextInt();
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("Calendar.DAY_OF_MONTH:" + Calendar.DAY_OF_MONTH);
System.out.println("days:" + days);
int d = c.get(Calendar.DAY_OF_WEEK);
System.out.println("Calendar.DAY_OF_WEEK:" + Calendar.DAY_OF_WEEK);
System.out.println("d:" + d);
System.out.println("您输入日期为: " + year + "年" + month + "月");
System.out
.println("-----------------------------------------------------\t");


System.out.println("天\t一\t二\t三\t四\t五\t六 ");
for (int i = 1; i < d; i++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print(i + "\t");
if (((d - 1) + i) % 7 == 0) {
System.out.println();
}
}
System.out
.println("\n-----------------------------------------------------");
}

}


=====================

第二种程序

import java.util.*;


class  WanNianLi
{ 
public WanNianLi(){
//先输入年月
System.out.println("输入年");
Scanner in_nian=new Scanner(System.in);
int nian=in_nian.nextInt();
System.out.println("输入月");
Scanner in_yue=new Scanner(System.in);
int yue=in_yue.nextInt();
//判断输入的年是否闰年
boolean flag=panRunNian(nian);
//根据输入的月判断月的天数
int days=panYueTianShu(yue,flag);
//计算输入的年距离1900年1月1号的总天数
int sum_days_nian=sumDaysNian(nian);
//计算输入的月距离输入该年的1月1号的总天数
int sum_days_yue=sumDaysYue(yue,nian);
//两总天数相加
int sum_days=sum_days_nian+sum_days_yue;
//计算输入月的第一天的星期数
int zhou_hao_yue_firstday=zhouHaoYueFirstday(sum_days);
//格式化输出月历
DisplayYueLi(zhou_hao_yue_firstday,days);
System.out.println(sum_days+","+sum_days_nian+","+sum_days_yue);
}


public static void main(String[] args) 
{ 
new WanNianLi();
}

public boolean panRunNian(int nian){
if(nian%4==0&&nian/100!=0||nian%400==0)
return true;
return false;
}

public int panYueTianShu(int yue,boolean flag){
switch(yue){
case 12:
case 10:
case 8:
case 7:
case 5:
case 3:
case 1:return 31;
case 2:if(flag) return 29;else return 28;
case 4:
case 6:
case 9:
case 11:return 30;
default:return -1;
}
}


public int sumDaysNian(int nian){
int sum=0;
for(int i=1900;i<nian;i++)
{
if(panRunNian(i))
sum+=366;
  else sum+=365;
}
return sum;
}


public int sumDaysYue(int yue,int nian){
int sum=0;
boolean flag=panRunNian(nian);
for(int i=1;i<yue;i++)
{ 
sum+=panYueTianShu(i,flag);
}
return sum;
}


public int zhouHaoYueFirstday(int sum_days){
int zhou_hao=sum_days%7;
return zhou_hao;
}


public void DisplayYueLi(int zhou_hao_yue_firstday,int days){
System.out.println("星期天星期一 星期二星期三 星期四星期五 星期六");
for(int i=0;i<zhou_hao_yue_firstday;i++)
System.out.print("      ");
int sum=zhou_hao_yue_firstday;
for(int i=1;i<=days;i++){
System.out.printf("%-6d",i);
sum++;
if(sum%7==0) System.out.println();
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值