实现一个万年历,输入年份和月份可以查看当前的月历(详细见代码这儿就不细说了)
package kcw.com;
import java.util.Scanner;
public class PerpetualCalender {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1900-1-1 是星期一
//2018-5 2018-5-1 星期?
//闰年能被4整除但不能被100整除,或能被400整除
Scanner input=new Scanner(System.in);
System.out.println("输入年份:");
int year=input.nextInt();
System.out.println("输入月份:");
int month=input.nextInt();
//计算1900到year有多少年,第几365天?
int days=(year-1900)*365;
//计算 从1900到year有几个闰年?
for(int i=1900;i<year;i++) {
if(i%4==0&&i%100!=0||i%400==0) {
days++;
}
}
//从输入的年份的1月1到输入月份的1号共有多少天?
switch(month) {
case 12:
days+=30;
case 11:
days+=31;
case 10:
days+=30;
case 9:
days+=31;
case 8:
days+=31;
case 7:
days+=30;
case 6:
days+=31;
case 5:
days+=30;
case 4:
days+=31;
case 3:
days+=28;
case 2:
days+=31;
}
//当月1号加一天
days++;
//如果月份在2月份以后要计算当年是否闰年
if(year%4==0&&year%100!=0||year%400==0) {
days++;
}
//从1900-1-1是星期一根据总天数算出输入月份的1号是星期几
int week=days%7;
System.out.println(week);
//当月共有几天
int dayOfMonth=31;
switch(month) {
case 4:case 6: case 9:case 11:
dayOfMonth=30;
case 2:
if(year%4==0&&year%100!=0||year%400==0) {
dayOfMonth=29;
}else {
dayOfMonth=28;
}
}
//从一号开始输入,前面先输出空格(空格等于星期几)
int count=0;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<week;i++) {
System.out.print("\t");
count++;
}
//空格+输入日期满7个换行
for(int i=1;i<dayOfMonth;i++) {
System.out.print(i+"\t");
count++;
if(count%7==0) {
System.out.println();
}
}
}
}
总结:循环控制分开对初学者不是很难,但是如果混合起来再加以嵌套多重循环,就可能会懵,理不清思路,
我的建议多练,多分析,先分析再做题,边分析边做题,效果节能会好些