#一、前言 最近刚开了java课程,老师布置了一个按标准格式打印本月日历的程序,本题较为简单,下面附上两段代码,一段是用c的思想来写的(上个学期刚学完c),一段是用java里的一些自带类写的。 #二、代码 这段是类似c的:
import java.util.Scanner;
public class Data{
static int[] NormalYear={31,28,31,30,31,30,31,31,30,31,30,31};
static int[] LeapYear={31,29,31,30,31,30,31,31,30,31,30,31};
public static void main(String[] arg){
int days=0,ThisMonth=0,temp=1;
Scanner data = new Scanner(System.in);
String[] EnglishMonth = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
System.out.print("please input year:");
int year = data.nextInt();
System.out.print("please input month:");
int month = data.nextInt();
System.out.println("------------ "+EnglishMonth[month-1]+" "+year+" ------------");
System.out.println("Sun Mon Tues Wed Thur Fri Sat");
days=OffsetValue(year, month);
days%=7;
int BlankSpace=days*5;
while(BlankSpace>0){
System.out.print(" ");
BlankSpace--;
}
if(JudgeLeapYear(year))
ThisMonth=LeapYear[month-1];
else
ThisMonth=NormalYear[month-1];
while((ThisMonth--)>0){
System.out.printf("%-5d",temp++);
if(days>=6)
{
System.out.printf("\n");
days-=6;
}
else
days++;
}
data.close();
}
public static int OffsetValue(int year,int month){
final int BaseData=1980;
int YearTemp=0,day=0;
boolean ThisYear=false;
YearTemp=year-BaseData;
for(int i=0,j=BaseData;i
if((j%4==0&&j%100!=0)||j%400==0)
day+=366;
else
day+=365;
}
ThisYear=JudgeLeapYear(year);
for(int j=0;j
if(ThisYear)
day+=LeapYear[j];
else
day+=NormalYear[j];
}
return day+2;
}
public static boolean JudgeLeapYear(int year){
if((year%4==0&&year%100!=0)||year%400==0)
return true;
else
return false;
}
}
这段是用java里自带类写的:
import java.time.*;
import java.util.Scanner;
public class DateJ{
public static void main(String[] args){
Scanner num = new Scanner(System.in);
System.out.print("please enter the year:");
int year = num.nextInt();
System.out.print("please enter the month:");
int month = num.nextInt();
String[] EnglishMonth = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
System.out.println("------------ "+EnglishMonth[month-1]+" "+year+" ------------");
LocalDate date = LocalDate.of(year,month,1);
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for(int i=0;i
System.out.print(" ");
while(date.getMonthValue() == month){
System.out.printf("%-4d ",date.getDayOfMonth());
date = date.plusDays(1);
if(date.getDayOfWeek().getValue() == 7)
System.out.println();
}
num.close();
System.out.println();;
}
}