答案:import java.util.Scanner;
public class Kalendar {
public static void main(String[] args){
int year = 0; // 输入年份
int month = 0; // 输入月份
int day =0; // 输入月份的天数
int date = 0; // 星期几
int sub = 0; // 输入日期距离1900年1月1日的天数差
boolean flag = false; // 标识是平年或闰年(false为平年)
System.out.println("* * * * * * * * * * * * * * * 万 年 历 * * * * * * * * * * * * * * *\n");
Scanner input = new Scanner(System.in);
System.out.print("请选择年份:");
year = input.nextInt();
/*判断输入的年份是平年或闰年*/
if(year%4 == 0 && year%100 != 0 || year%400 == 0){
flag = true;
System.out.println(year + "\t闰年");
}else{
System.out.println(year + "\t平年");
}
System.out.print("\n请输入月份:");
month = input.nextInt();
/*判断输入的年份是平年或闰年,并计算出月份天数*/
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10
|| month == 12 ){
day = 31;
}else if(month == 4 || month == 6 || month == 9 || month == 11 ){
day = 30;
}else if(month == 2){
if(flag){
day = 29;
}else{
day = 28;
}
}else{
System.out.println("您输入的月份错误!");
System.exit(0); // 输入月份错误则提示错误并程序结束
}
System.out.print(month + "\t" + day + "天\n");
/*计算输入年份距离日期1900年1月1日的天数差*/
for(int i = 1900; i < year; i ++){
if(i%4 == 0 && i%100 != 0 || i%400 == 0){ // 注意这里是“i”,不是“year”
sub = sub + 366;
}else{
sub = sub + 365;
}
}
/*计算输入月份距离当前年份1月1日的天数差*/
for(int i = 1; i < month; i ++){
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12 ){
sub = sub + 31;
}else if(i == 4 || i == 6 || i == 9 || i == 11 ){ // 注意这里是“i”,不是“month”
sub = sub + 30;
}else if(i == 2){
if(flag){ // 闰年标识
sub = sub + 29;
}else{
sub = sub + 28;
}
}
}
sub = sub + 1; // 计算输入当前月的1号距离1900年1月1日的天数差
date = sub%7; // 计算输入当前月的1号是星期几
System.out.print("\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n\n");
/*根据当前月份1号是星期几则输出相应的空格(星期日输出0个,星期一输出1个,以此类推)*/
for(int i =0; i < date; i ++){
System.out.print("\t");
}
/*输入月份的日期表*/
for(int i = 1; i <= day; i ++){
System.out.print(" " + i + "\t");
/*判断月份中如果当日是星期六则换行*/
if(sub%7 == 6){
System.out.println("\n");
}
sub++; // 天数累加
}
}
上一个:JAVA语言有什么特点???
下一个:java编程,谁能帮帮我啊