java打印指定年月份的日歷
本文實(shí)例為大家分享了java打印指定年月份日歷的具體代碼,供大家參考,具體內(nèi)容如下
做了一個小的日歷打印,沒有使用數(shù)組,所以不能對日期進(jìn)行操作,用了單個for循環(huán)打印,對初學(xué)者來說應(yīng)該好理解點(diǎn)
工具類:
import java.util.Calendar; public class DaysTool { private int year; private int month; public DaysTool(){} public DaysTool(int year ,int month){ this.year = year; this.month = month; } /** * 根據(jù)年份和月份來得到打印月份的第一天是周幾 * @return 是一周的周幾 */ public int WhatWeekDay(){ //創(chuàng)建Calendar對象 Calendar calendar = Calendar.getInstance(); //設(shè)置calendar對象的年 calendar.set(Calendar.YEAR,this.year); //設(shè)置calendar對象的月份 ,因?yàn)榇颂幍脑路菔菑牧汩_始(0-11表示1-12月),所以我們輸入的數(shù)值要減去1才是正確的月份 //(比如輸入8月,接收數(shù)值 8 ,但是因?yàn)镃alendar的特殊月份計數(shù), 8 代表的是"9月",所以減去 1 為 7 ,才是正確的 8月) calendar.set(Calendar.MONTH,this.month-1); //設(shè)置日期為打印月的第一天 calendar.set(Calendar.DATE, 1); //用get方法獲取這一天是周幾 int whatDay = calendar.get(Calendar.DAY_OF_WEEK); //Calendar從周日開始到周六結(jié)束,用1-7表示,這里為了方便,把其數(shù)值減 1 ,得到周日到周六為 0 - 6 只需特殊處理周日即可 return whatDay-1; //得出這個月的第一天是周幾 } public int WhatDayOfMonth(){ //實(shí)例化Calendar對象 Calendar calendar = Calendar.getInstance(); //設(shè)置為打印年打印月的下一個月(參考WhatWeekDay方法中的月份注釋 ,這里沒減1)第一天. //例:輸入 2018 2 其實(shí)為2018年的3月 calendar.set(this.year,this.month,1); //使上面的日期退一天 得到打印月 calendar.add(Calendar.DATE,-1); //獲取日的數(shù)值 int monthDay =calendar.get(Calendar.DATE); return monthDay; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMouth() { return month; } public void setMouth(int mouth) { this.month = mouth; } }
主類(包含了打印工具類)
import java.util.Scanner; public class PrintCalendar { public static void main(String[] args) { //接收鍵盤錄入年份和月份 Scanner scanner = new Scanner(System.in); System.out.print("請輸入需要打印的年份: "); int year = scanner.nextInt(); System.out.print("請輸入需要打印的月份: "); int month = scanner.nextInt(); //創(chuàng)建日歷工具類對象,并用帶參構(gòu)造初始化 DaysTool dt = new DaysTool(year,month); //實(shí)例化打印工具類對象 PrintDayTool pd = new PrintDayTool(); System.out.println(String.format("\n即將打印%d年%d月日歷",year,month)+"\n"); System.out.println("========================================================\n"); //調(diào)用打印工具類對象的printDay方法,傳入年和月份 pd.printDay(dt.WhatDayOfMonth(),dt.WhatWeekDay()); System.out.println("========================================================"); } } class PrintDayTool{ // /** * 打印日歷方法, * @param daysOfMouth 傳入?yún)?shù),確定打印月份的天數(shù) * @param whatDay 傳入?yún)?shù),確定打印月份的第一天是周幾 */ public void printDay(int daysOfMouth,int whatDay){ int count = 0; //定制計數(shù)標(biāo)記 System.out.print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); //j從1開始 到這個月的天數(shù)結(jié)束 for(int j = 1 ; j <= daysOfMouth ; j ++){ count++; //每打印七天就換行 if(count % 7 == 1){ System.out.print("\n\n"); } //如果這月的第一天是周日就把它置為0 不打印額外制表符 if(whatDay==7) whatDay = 0; //這個月的第一天是周幾就額外打印幾次制表符 while (whatDay>0){ System.out.print("\t\t"); whatDay--; count++; } //打印天數(shù) System.out.print(j+"\t\t"); } //打印完日歷換行 System.out.println("\n"); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Graphics2D實(shí)現(xiàn)字符串文本自動換行
這篇文章主要為大家詳細(xì)介紹了Java如何使用Graphics2D實(shí)現(xiàn)字符串文本自動換行,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04SpringBoot 回滾操作的幾種實(shí)現(xiàn)方式
回滾操作是一種常見的操作,用于撤銷之前執(zhí)行的操作,本文主要介紹了SpringBoot回滾操作的幾種實(shí)現(xiàn)方式,包含基于異常類型的回滾、基于自定義邏輯的回滾和基于數(shù)據(jù)庫狀態(tài)的回滾,感興趣的可以了解一下2024-03-03基于SpringBoot實(shí)現(xiàn)上傳2種方法工程代碼實(shí)例
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)上傳工程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08SpringBoot整合MongoDB實(shí)現(xiàn)事務(wù)管理
Spring Boot是一種快速開發(fā)Spring應(yīng)用的方式,它提供了大量的自動配置和默認(rèn)設(shè)置,以簡化開發(fā)流程,MongoDB是一個基于文檔的NoSQL數(shù)據(jù)庫,本文將介紹如何在Spring Boot應(yīng)用中整合MongoDB,并實(shí)現(xiàn)事務(wù)管理,需要的朋友可以參考下2024-07-07