java中打印月歷的代碼 java輸出本月日歷

java輸出一個(gè)月的月歷

import java.util.*;

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、電商網(wǎng)站制作開發(fā)、成都微信小程序、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

public class Year{

/**

*判斷是否為閏年

*/

public boolean getIsRun(int year){

if((year%4==0 year %100 !=0)||(year%400==0)){

return true;

}

return false;

}

/**

*返回某年某月有多少天。

*/

public int getDay(int year ,int month){

int[] day={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//閏年月份

int[] day1={31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//普通月份

if(this.getIsRun(year)){

return day[month+1];

}else{

return day1[month+1];

}

}

/**

*返回這個(gè)月的1號(hào)是星期幾

*/

public int getWeek(int year,int month){

Date date=new Date();

date.setYear(year);

date.setMonth(month);

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

return calendar.get(calendar.DAY_OF_WEEK);

}

/**

*打印出來(lái),嘎嘎

*/

public void showPrint(int year,int month){

int day=this.getDay(year,month);

int week=this.getWeek(year,month);

System.out.println("日\(chéng)t一\t二\t三\t四\t五\t六\n");

for(int i=0;i=week;i++){//

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

}

for(int j=1;j=day;j++){

if((j+week)%7==0){

System.out.println ();

}

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

}

// System.out.println(week);

}

public static void main(String[] args){

Year y=new Year();

y.showPrint(2008,3);

}

}

Java日歷打印,怎么加輸入年份,打印整年12個(gè)月打印,輸入月份打印季節(jié),下面代碼如何優(yōu)化,給個(gè)思路?

建議封裝函數(shù),使用數(shù)組完成所有的打印

比如獲取天數(shù),getDays(int year,int month)

獲取星期,getDay(int allDays)

獲取極度,getQuater(int month)

然后打印重載寫print方法,傳入的flag不同打印年 嫉妒等

Java 打印兩個(gè)月的日歷

水平排列有點(diǎn)蛋疼,不過(guò)還是想到辦法搞定了,希望你運(yùn)行的時(shí)候排列不會(huì)有問(wèn)題。請(qǐng)接招:

import?java.text.DateFormat;

import?java.text.ParseException;

import?java.text.SimpleDateFormat;

import?java.util.ArrayList;

import?java.util.Calendar;

import?java.util.Date;

import?java.util.List;

import?java.util.Scanner;

public?class?CalendarOutput?{

private?static?Calendar?cal1,?cal2;

private?static?final?String[]?DAY_OF_WEEK?=?{"Sun",?"Mon",?"Tue",?"Wed",?"Thu",?"Fri",?"Sat"};

private?static?DateFormat?df?=?new?SimpleDateFormat("yyyy年MM月");

private?static?DateFormat?parseDf?=?new?SimpleDateFormat("yyyyMM");

private?static?Scanner?sc;

public?static?void?main(String[]?args)?{

cal1?=?Calendar.getInstance();

cal1.set(Calendar.DATE,?1);

cal1.setFirstDayOfWeek(Calendar.SUNDAY);

cal2?=?Calendar.getInstance();

cal2.set(Calendar.DATE,?1);

sc?=?new?Scanner(System.in);

System.out.println("請(qǐng)輸入年月(如201411):");

Date?d?=?null;

while(null?==?d)?{

try?{

String?line?=?sc.nextLine();

d?=?parseDf.parse(line);

}?catch?(ParseException?e)?{

System.out.println("日期格式不正確,請(qǐng)重新輸入!");

d?=?null;

}

}

cal1.setTime(d);

cal2.set(Calendar.YEAR,?cal1.get(Calendar.YEAR));

cal2.set(Calendar.MONTH,?cal1.get(Calendar.MONTH));

cal2.add(Calendar.MONTH,?1);

printCal();

}

private?static?void?printCal()?{

//?先在最頂部顯示年份

System.out.println(String.format("\t%s\t\t\t%s",

df.format(cal1.getTime()),?df.format(cal2.getTime())));

printWeek();?//?然后輸出星期日到星期一

//?先將兩個(gè)月的日期保存到兩個(gè)數(shù)組中

String[][]?month1?=?putMonth(cal1);

String[][]?month2?=?putMonth(cal2);

//?再將數(shù)組中的文字取出來(lái)并顯示

for(int?i?=?0;?i??month1.length;?i?++)?{

String[]?month?=?month1[i];

//?逐周輸出日期

for(int?j?=?0;?j??month.length;?j?++)?{

System.out.print(month[j]);

}

//?如果第二個(gè)月周數(shù)不小于第一個(gè)月,則在本行再輸出第二個(gè)月的日期

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

if(month2.length??i)?{

for(int?j?=?0;?j??month.length;?j?++)?{

System.out.print(month2[i][j]);

}

}

System.out.println();

}

//?如果第二個(gè)月周數(shù)大于第一個(gè)月,則再輸出第二個(gè)月的日期(可用2月份檢驗(yàn))

if(month1.length??month2.length)?{

int?deltaMonth?=?month2.length?-?month1.length;

for(int?i?=?0;?i??deltaMonth;?i?++)?{

for(int?j?=?0;?j??7;?j?++)?{

System.out.print("????");

}

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

for(int?j?=?0;?j??7;?j?++)?{

System.out.print(month2[month1.length?+?i][j]);

}

}

}

}

private?static?String[][]?putMonth(Calendar?cal)?{

ListListString?listArray?=?new?ArrayListListString();

int?month?=?cal.get(Calendar.MONTH);

cal.set(Calendar.DATE,?1);

int?startDayOfWeek1?=?cal.get(Calendar.DAY_OF_WEEK);

ListString?list?=?new?ArrayListString();

//?先設(shè)置為本周屬于上個(gè)月的幾天,以空字符顯示

cal.add(Calendar.DATE,?-(startDayOfWeek1?-?Calendar.SUNDAY)?-?1);

for(int?i?=?Calendar.SUNDAY;?i??startDayOfWeek1;?i?++)?{

list.add("\t");

}

//?重新初始化為本月第一天

cal.set(Calendar.MONTH,?month);

cal.set(Calendar.DATE,?1);

int?maxDate?=?cal.getActualMaximum(Calendar.DATE);?//?本月最多的天數(shù)(不用再去判斷是否閏年了)

for(int?j?=?1;?j?=?maxDate;?j?++)?{

list.add(String.format("%4s",?j?+?""));

if(list.size()?==?7)?{

ListString?list2?=?new?ArrayListString(list);

listArray.add(list2);?//?碰到星期六就換行

list?=?new?ArrayListString();

}?else?if(j?==?maxDate)?{

listArray.add(list);?//?最后一天就將最后一周添加進(jìn)來(lái)

}

}

String[][]?monthDates?=?new?String[listArray.size()][7];

for(int?i?=?0;?i??listArray.size();?i?++)?{

ListString?item?=?listArray.get(i);

for(int?j?=?0;?j??7;?j?++)?{

if(item.size()??j)?{?//?如果是最后一周的話可能存在下標(biāo)越界

monthDates[i][j]?=?item.get(j);

}?else?{?//?下標(biāo)越界的時(shí)候設(shè)置為空字符串

monthDates[i][j]?=?"\t";

}

}

}

return?monthDates;

}

private?static?void?printWeek()?{

for(int?i?=?Calendar.SUNDAY;?i?=?Calendar.SATURDAY;?i?++)?{

System.out.print(String.format("%4s",?DAY_OF_WEEK[i?-?1]));

}

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

for(int?i?=?Calendar.SUNDAY;?i?=?Calendar.SATURDAY;?i?++)?{

System.out.print(String.format("%4s",?DAY_OF_WEEK[i?-?1]));

}

System.out.println();

}

}

網(wǎng)站標(biāo)題:java中打印月歷的代碼 java輸出本月日歷
鏈接分享:http://muchs.cn/article38/ddcissp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、App設(shè)計(jì)服務(wù)器托管、云服務(wù)器網(wǎng)站改版、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)