『壹』 編寫 萬年歷java代碼例如1900年一月一日是星期一。
importjava.util.Calendar;
importjava.util.Date;
importjava.util.Scanner;
publicclassMyCalendar
{
publicstaticvoidmain(String[]args)
{
Scannerscanner=newScanner(System.in);
Stringreg="^(\d+)[^\d]+((0?[1-9])|(1[012]))$";
while(true)
{
System.out.println("輸入年月(年和月用非數字隔開:如2015.1)(什麼都不輸入直接退出)");
Stringline=scanner.nextLine().trim();
if("".equals(line))
{
scanner.close();
break;
}
if(!line.matches(reg))
{
continue;
}
intyear=Integer.parseInt(line.replaceAll(reg,"$1"));
intmonth=Integer.parseInt(line.replaceAll(reg,"$2"));
System.out.println("日 一 二 三 四 五 六");
Calendarcalendar=Calendar.getInstance();
//這個月的1號是星期幾
calendar.set(year,month-1,1);
intday=calendar.get(Calendar.DAY_OF_WEEK);
intstart=Calendar.SUNDAY;
calendar.add(Calendar.DATE,-day+start);
while(start<day)
{
System.out.print(calendar.get(Calendar.DATE)+" ");
calendar.add(Calendar.DATE,1);
start++;
}
calendar.set(year,month-1,1);
Datenow=calendar.getTime();
calendar.set(year,month,1);
Datenext=calendar.getTime();
for(Datecur=now;cur.before(next);)
{
calendar.setTime(cur);
intx=calendar.get(Calendar.DATE);
Stringtmp=x<10?"0"+x:x+"";
System.out.print(tmp+" ");
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)
{
System.out.println();
}
calendar.add(Calendar.DATE,1);
cur=calendar.getTime();
}
calendar.add(Calendar.DATE,-1);
intto=calendar.get(Calendar.DAY_OF_WEEK);
intend=Calendar.SATURDAY;
while(to<end)
{
calendar.add(Calendar.DATE,1);
intx=calendar.get(Calendar.DATE);
Stringtmp=x<10?"0"+x:x+"";
System.out.print(tmp+" ");
to++;
}
System.out.println();
}
}
}
『貳』 java程序的萬年歷編程代碼
public static void main(String[] args) {
calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2012);
calendar.set(Calendar.MONTH,1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int first = calendar.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println(calendar.get(Calendar.YEAR) + "年"
+ (calendar.get(Calendar.MONTH) + 1) + "月萬年歷");
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < first; i++) {
System.out.print("\t");
}
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i < maxDay; i++) {
if (first / 7 == 1) {
first = 0;
System.out.println();
}
System.out.print(i + 1
+ (first / 6 == 1 || i == maxDay - 1 ? "" : "\t"));
first++;
}
}
『叄』 java中,一段萬年歷代碼,跑起來總是差4天,修改之後也只能讓一部分月份的顯示正確,代碼如下
我改造了一下你的代碼 :
packagecom.mikuma.calendar;
importjava.util.GregorianCalendar;
importjava.util.Scanner;
publicclassCalendar{
publicstaticvoidmain(String[]args){
intyear=0;
intmonth=0;
Scannerscanner=newScanner(System.in);
System.out.println("請輸入您要查詢的年份");
year=scanner.nextInt();
System.out.println("請輸入您要查詢的月份");
while(true){
month=scanner.nextInt();
if(month<0||month>12){
System.out.println("月份輸入有誤,請重新輸入");
}else{
break;
}
}
printPermanentCalendar(year,month);
}
/**
*輸出萬年歷
*
*@paramyear
*@parammonth
*/
(intyear,intmonth){
intdays=0;
inttotaldays=0;//獲取1990年至查詢的年份的天數
for(inti=1900;i<year;i++){
totaldays=totaldays+(isLeapYear(i)?366:365);
}
intbeforedays=0;//到指定月份的天數
for(inti=1;i<=month;i++){
switch(i){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case4:
case6:
case9:
case11:
days=30;
break;
case2:
days=isLeapYear(year)?29:28;
break;
default:
break;
}
if(i<month){
beforedays=beforedays+days;
}
}
totaldays=totaldays+beforedays;//總計天數,以判斷周幾;
intweekDay=0;
inttemp=(1+totaldays)%7;
if(temp==0){//1990年1月1日星期一,據此日0天星期一,以此類推
weekDay=0;
}else{
weekDay=temp;
}
System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六");
for(inti=0;i<weekDay;i++){
System.out.print(" ");
}
for(inti=1;i<=days;i++){
System.out.print(i+" ");
if((totaldays+i)%7==6){
System.out.print(" ");
}
}
}
(intyear){
returnnewGregorianCalendar().isLeapYear(year);
}
}
運行:
也是正確