有个朋友做课程设计 ,要求一个万年历的JAVA程序,本人才疏学浅,但为人好心,把自己做的发表一下,如果能用的到就尽管参考,都是新手~~坚持才能变得强大哦。
我看过WINDOWS的万年历,最多能到2999年,2999年以后的查不到(不过咱似乎也活不了那么长时间~~)
这个程序能查询从1900年以后的所有年限,虽然不算太完善。做个课程设计是没问题的啦
以下是代码
//万年历
import java.util.*;
public class timeshow{
public static void main(String[] args){
/**
* 判断是否为闰年
*/
String answer=" ";
do{
System.out.println("请输入年份:");
Scanner input=new Scanner(System.in);
int year=input.nextInt(); //年
System.out.println("请输入月份:");
int month=input.nextInt(); //月
boolean tip=true;; //标志输入年份
int day=0; //天
if(year%4==0&&year%100!=0||year%400==0){
System.out.print("您输入的是闰年 ");
tip=true;
}else{
System.out.print("您输入的是平年 ");
tip=false;
}
/**
* 计算输入月份的天数
*/
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;
break;
case 2: //平年2月28天,闰年2月29天
if(tip){
day=29;
}else{
day=28;
}
break;
default:
day=30;
break;
}
System.out.print("共"+day+"天");
/**
* 输入年份距离1900年1月1日的天数
*/
int sumyearday=0; //输入年份距1900年的天数
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sumyearday=sumyearday+366;
}else{
sumyearday=sumyearday+365;
}
}
System.out.print(" 距离1900年1月1日"+sumyearday+"天");
/**
* 输入月份距本年1月的天数
*/
int summonth=0;
for(int i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;
break;
case 2: //平年2月28天,闰年2月29天
if(tip){
day=29;
}else{
day=28;
}
break;
default:day=30;
break;
}
if(i<month){
summonth=summonth+day;
}
}
System.out.println(" 距离本年1月1日"+summonth+"天");
int sumday=summonth+sumyearday; //计算本月距离1900.1.1的天数
int xingqi=(1+sumday%7)%7; //计算星期
//System.out.println("xingqi"+xingqi);
System.out.println("星期日/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六");
for(int k=0;k<xingqi;k++){
System.out.print("/t");
}
for(int i=1;i<=day;i++){
System.out.print(i+"/t");
if((sumday+i-1)%7==5){ //周六换行
System.out.print("/n");
}
}
System.out.println("/n是否继续? 输入Y/N");
answer=input.next();
}while(answer.equals("y"));
System.out.println("程序结束");
}
}
程序调试过了,直接就能运行