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);
}
}
建議封裝函數(shù),使用數(shù)組完成所有的打印
比如獲取天數(shù),getDays(int year,int month)
獲取星期,getDay(int allDays)
獲取極度,getQuater(int month)
然后打印重載寫print方法,傳入的flag不同打印年 嫉妒等
水平排列有點(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)