【JAVA】15 实例:和壁虎老师一起做的日历——2014年2月12日
这个是在51自学网上和壁虎老师学的,所以原理什么注释不多,亲自己看吧~
import java.util.Scanner;
public class rili {
public static void main(String []args){
@SuppressWarnings("resource" )
Scanner in = new Scanner(System.in);
System. out.println("请输入年份" );
int year=in.nextInt();
System. out.println("请输入月份" );
int month=in.nextInt();
//求1900年1月1日到2016年9月1日相隔多少天
//求1900年到2015年的总天数
int sum=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum+=366;
} else{
sum+=365;
}
}
//求总天数的天数
for(int j=1;j<month;j++){
if(j==2){
if(year%4==0&&year%100!=0||year%400==0){
sum+=29;
} else{
sum+=28;
}
} else{
if(j==4||j==6||j==9||j==11){
sum+=30;
} else{
sum+=31;
}
}
}
sum+=1;
//System.out.println(sum%7);
//求算星期几
int weekday=sum%7;
//判断这个月有多少天
int days=0;
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){
days=29;
} else{
days=28;
}
} else{
if(month==4||month==6||month==9||month==11){
days=30;
} else{
days=31;
}
}
//打印日历表头
System. out.println("日\t一\t二\t三\t四\t五\t六" );
for(int i=1;i<=weekday;i++){
System. out.print("\t" );
}
//打印日历中数据
for(int i=1;i<=days;i++){
if(sum%7==6){
System. out.print(i+"\n" );
} else{
System. out.print(i+"\t" );
}
sum++;
}
}
}
然后还有一份我用面向对象改写的(刚学了类的概念,照猫画虎= =
import java.util.Scanner;
public class riLiGaiXie {
public static void main(String []args){
@SuppressWarnings("resource" )
Scanner in = new Scanner(System.in);
System. out.println("请输入年份" );
int year=in.nextInt();
System. out.println("请输入月份" );
int month=in.nextInt();
Time rili = new Time(year,month);
rili.print(rili.sum(),rili.month());
}
static class Time{
int month ;
int year ;
int sum ;
public Time(int year,int month){
this.year =year;
this.month =month;
}
//求总天数的天数,并计算该月1日是星期几
public int sum(){
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
this.sum +=366;
} else{
this.sum +=365;
}
}
for(int j=1;j<month;j++){
if(j==2){
if(year %4==0&&year%100!=0|| year%400==0){
this.sum +=29;
} else{
this.sum +=28;
}
} else{
if(j==4||j==6||j==9||j==11){
this.sum +=30;
} else{
this.sum +=31;
}
}
}
sum+=1;
//System.out.println(sum%7);
//取模求算星期几
return sum %7;
}
//判断这个月有多少天
public int month(){
if(month ==2){
if(year %4==0&&year%100!=0|| year%400==0){
return 29;
} else{
return 28;
}
} else{
if(month ==4||month==6|| month==9||month ==11){
return 30;
} else{
return 31;
}
}
}
//打印日历
public void print(int weekday, int days){
//打印日历表头
System. out.println("日\t一\t二\t三\t四\t五\t六" );
for(int i=1;i<=weekday;i++){
System. out.print("\t" );
}
//打印日历中数据
for(int i=1;i<=days;i++){
if(sum %7==6){
System. out.print(i+"\n" );
} else{
System. out.print(i+"\t" );
}
sum++;
}
}
}
}