日历小案列

注意,此代码运用了 取系统的当前时间跟 scanner差不多的,

还标记了,当前日​

此日历在输出时运用的代码比前面的容易好多​

import java.util.Calendar;

import java.util.Scanner;

import java.util.Random;//放在开头,跟Scanner 一样。

public class Test1{

public static void main(String []args){

Scanner in =new Scanner(System.in);

int year=0;

do{

System.out.println("请输入年份:");

year= in.nextInt();

}while(year<1900);

int month=0;

do{

System.out.println("请输入月份:");

month=in.nextInt();

}while(month<1||month>12);

int sum=getAllDys(year,month);

int weekDay=sum%7;

System.out.println(year+"年"+month+"月的一号是星期"+weekDay);

System.out.println("总天数");

System.out.println(sum);

System.out.println("*********************************");

System.out.println("星期天"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"星期五"+"\t"+"星期六");

for(int i=0;i

System.out.print("\t");

}

int days= getDays(year,month);

for(int i=1;i<=days;i++){

if(isCurrentDay(year,month,i)){

System.out.print("*"+i+"*"+"\t");

}else{

System.out.print(i+"\t");

}

if((i+weekDay)%7==0){

System.out.println();

}

}

System.out.println();

}

//判断是否为当前天

public static boolean isCurrentDay(int year ,int  month,int i){

//取系统的当前时间,注意在最前面需要加个引用的头

Calendar rightNow=Calendar.getInstance();

//Calendar.YEAR 表示你要取得年的值

int y=rightNow.get(Calendar.YEAR);

int m=rightNow.get(Calendar.MONTH)+1;//Calendar.MONTH 表示 要取的月份 但是它是从0开始算得,所以得+1;

int d=rightNow.get(Calendar.DAY_OF_MONTH);

System.out.println(y+""  +m+""+d);

//比较是否相同 与你输的 年月

if(year==y && month==m  && i==d){

return true;

}else{

return false;

}

}

public static int getAllDys(int year, int month){

//求出1900 到 year -1那年的总天数

//2求出 1到MOTH-1 月的天数

//3再多加一个1(1号)

int sum=0;

for(int  i=1900;i

if(isRun( i)){

sum+=366;

}else{

sum+=365;

}

}

for(int i=1;i

sum+=getDays(year,i);

}

sum=sum+1;

return sum;

}

public static boolean isRun( int year ){

if( (year%4==0&&year0!=0)||(year@0==0) ){

return true;

}else{

return false;

}

}

public static int getDays( int year,int month){

int days=0;

switch( month){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: days=31;break;

case 4:

case 6:

case 9:

case 11:days=30; break;

case 2:

if(isRun( year)){

days=29;

}else{

days=28;

}

break;

}

return days;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值