java中万年历小项目的两种写法
1.for和switch,以及if套用
package cn.sxt;
import java.util.Scanner;
/*
*
* 万年历的制作
*/
public class Test7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int years = input.nextInt();
System.out.print("请输入月份:");
int mouth = input.nextInt();
int a = 0;//假设a为一个月的总天数
int b = 0;//假设b为该年到上个月底的总天数
int c = 0;//假设c为1990年1月1日到该年的天数
for(int i = 1990; i<years; i++) {
if((i%4==0 && i%100!=0) || i%400==0) {
c+=366;
}
else {
c+=365;
}
}
for(int i =1; i<=mouth; i++) {
switch(i) {
case(1): case(3): case(5): case(7): case(8):
case(10): case(12):
a =31;
break;
case(4): case(6): case(9): case(11):
a =30;
break;
case(2):
if((years%4==0 && years%100!=0) || years%400==0) {
a = 29;
} else {
a = 28;
}
break;
}
if(i<mouth) {
b+=a;
}
}
int week =(b+c+1)%7;
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int i =0; i<week; i++) {
System.out.print("\t");
}
for(int i =1; i<=a; i++) {
System.out.print(i+"\t");
if((week+i)%7==0) {
System.out.print("\n");
}
}
}
}
2.用if和for套用
package cn.sxt;
import java.util.Scanner;
public class Test72 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int years = input.nextInt();
System.out.print("请输入月份:");
int mouth = input.nextInt();
int a = 0;//假设a为一个月的总天数
int b = 0;//假设b为该年到上个月底的总天数
int c = 0;//假设c为1990年1月1日到该年的天数
for(int i=1990; i<years; i++) {
if((i%4==0 && i%100!=0) || i%400==0) {
c+=366;
}
else {
c+=365;
}
}
for(int i=1; i<=mouth; i++) {
if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12 ) {
a=31;
}
else if(i==4 || i==6 ||i==9 || i==11) {
a=30;
}
else {
if((years%4==0 && years%100!=0) || years%400==0) {
a=29;
} else {
a=28;
}
}
if(i<mouth) {
b+=a;
}
}
//计算当月1号对应是星期几
int temp=(b+c+1)%7;
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
for(int i=1; i<=temp; i++) {
System.out.print("\t");
}
for(int i=1; i<=a; i++) {
System.out.print(i+"\t");
if((temp+i)%7==0) {
System.out.print("\n");
}
}
}
}
基本思路差不多