这是之前有个讲师教我的,但他并没有完全讲完,留下一部分让我们自己完成,非常感谢这位姓许的老师给我成长的机会。首先这段日历代码是最基础的,它没有任何图形化用户界面,没有调用其它类(当然了 Scanner类是用户输入是必须要的),用最简单最直接的办法让我们理解日历的原理,当然这段代码是有很多bug的,比如:当用户输入的不是数字,或者输入的数值过分的大或者过分的小等等,我都没有去处理,因为我只是想简单的理解日历,只有你理解了原理,就可以依照你自己的想法为所欲为了。最后,希望看过的各位下伙伴儿能制作出动感而不失风格的用户界面(bug一定要处理好,不然会打脸的!)。努力吧,小伙伴儿们!!!
import java.util.Scanner;
public class Rili {
public void rili(){
int n=0;//保存用户输入的年份
int y=0;//保存用户输入的月份
int z=0;//保存计算的总天数
int x=0;//保存计算得出的星期
int t=0;//保存每月的天数
//创建输入对象
Scanner in=new Scanner(System.in);
System.out.println("请输入要查询的年份:");
//获取用户输入的年份
n=in.nextInt();
System.out.println("请输入要查询的月份:");
//获取用户输入的月份
y=in.nextInt();
//从1900年1月1日开始到用户输入的年份一共有多少天
for(int i=1900;i<n;i++){
//判断是否是闰年,瑞年366天平年365天.
//闰年的条件是能被4整除不能被100整除或者能被400整除
if(i%4==0&&i%100!=0i%400==0){
z+=366;
}else{
z+=365;
}
}
//判断输入的月份,首先判断是否是2月,闰年2月29天,平年2月28天
//然后判断是否是大月1.3.5.7.8.10.12是31天,其余是30天
for(int i=1;i<y;i++){
if(i==2){
if(n%4==0&&n%100!=0n%400==0){
z+=29;
}
}else if(i==1i==3i==5i==7i==8i==10i==12){
z+=31;
}else if(i==4i==6i==9i==11){
z+=30;
}
}
//输出星期
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
//得到的总天数除以7余数是几就是星期几
x=z%7;
//循环输出星期几之前的空格
for(int i=0;i<x;i++){
System.out.print("\t");
}
//判断输入的月份是否是大月,大月就是31天,否则是30天
if(y==1y==3y==5y==7y==8y==10y==12){
t=31;
//如果是小月就是30天
}else if(y==4y==6y==9y==11){
t=30;
//如果是2月,则判断当年是否是闰年
}else if(y==2){
if(n%4==0&&n%100!=0n%400==0){
t=29;
}else{
t=28;
}
}
//循环输出天数,如果当天为星期六则换行继续输出
//\n为换行符 \t为空七个空格
for(int i=1;i<=t;i++){
if(z%7==6){
System.out.print("\n"+i);
}else{
System.out.print("\t"+i);
}
//每计算一次星期几,总天数都要加一次,因为星期加一总天数也要加一
z++;
}
}
//测试类
public static void main(String[] args) {
new Rili().rili();
}
}