java日历设计特点_Java实现打印本月日历(两种风格:类C风格和Java风格)

#一、前言   最近刚开了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();;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值