注意,此代码运用了 取系统的当前时间跟 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;
}
}