亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用Java編寫一個屬于自己的日歷

 更新時間:2022年05月13日 13:04:20   作者:程序喵正在路上  
這篇文章主要為大家介紹了如何利用Java編寫一個屬于自己的日歷,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起嘗試一下

問題提出

編寫程序,輸入年份,打印出該年的年歷(12個月的),效果如下圖所示。

一點提示

使用 Java 自帶的 Calendar 類得到一個 Calendar 類對象,然后我們可以去得到每個月的第一天是星期幾

Calendar 類不能直接 new 得到對象,需要使用 getInstance() 函數(shù)

//得到一個Calendar對象
Calendar c = Calendar.getInstance();

Calendar 類的 set 可以設置自己想要的日期為當前日期

get(Calendar.DAY_OF_WEEK) 可以得到某一天是星期幾,由于其內(nèi)部默認為美國時區(qū),所以我們設置月份和計算星期幾要減一

//設置日期為當前月份的第一天,由于時區(qū)的原因,month-1,get(java.util.Calendar.DAY_OF_WEEK) - 1
c.set(year, month - 1, 1);
//求出第一天是星期幾
int FirstDayInWeek = c.get(Calendar.DAY_OF_WEEK) - 1;

然后通過循環(huán)打印出每個月的日歷,注意大小月和閏月問題。

源碼分享

//導入相關包
import java.util.Scanner;
import java.util.Calendar;

public class MyCalendar {
    public static void main(String[] args) {
        //保存用戶輸入的年份
        int year;
        //保存每個月的天數(shù)
        int days = 0;
        //保存月份
        String[] months;

        months = new String[13];
        months[1] = "January";
        months[2] = "February";
        months[3] = "March";
        months[4] = "April";
        months[5] = "May";
        months[6] = "June";
        months[7] = "July";
        months[8] = "August";
        months[9] = "September";
        months[10] = "October";
        months[11] = "November";
        months[12] = "December";

        //接受用戶輸入的年份
        Scanner in = new Scanner(System.in);
        System.out.print("Please input years:");
        year = in.nextInt();

        //得到一個Calendar對象
        Calendar c = Calendar.getInstance();

        //循環(huán) 12 個月
        for (int month = 1; month <= 12; month++) {
            //標題
            System.out.println("\n  Month's name is " + months[month]);
            for (int i = 1; i <= 27; i++) System.out.print("=");
            System.out.println("\nSun\tMon\tTue\tWed\tThu\tFri\tSat");

            // 判斷當前月份的天數(shù)
            if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
                days = 31;
            }
            if (month == 4 || month == 6 || month == 9 || month == 11) {
                days = 30;
            }
            if (month == 2) {
                //閏年判斷
                if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
                    days = 29;
                } else {
                    days = 28;
                }
            }

            //設置日期為當前月份的第一天,由于時區(qū)的原因,month-1,get(java.util.Calendar.DAY_OF_WEEK) - 1
            c.set(year, month - 1, 1);
            //求出第一天是星期幾
            int FirstDayInWeek = c.get(Calendar.DAY_OF_WEEK) - 1;

            //用來控制換行
            int cnt = 0;

            //前面的空位
            for (int j = 0; j < FirstDayInWeek; j++) {
                System.out.print("    ");
                cnt++;
            }

            //打印當前月份日歷
            for (int i = 1; i <= days; i++) {
                if (cnt == 7) {
                    System.out.printf("\n");
                    cnt = 0;
                }
                System.out.printf("%-4d", i);
                cnt++;
            }

            System.out.print("\n");
        }
    }
}

到此這篇關于利用Java編寫一個屬于自己的日歷的文章就介紹到這了,更多相關Java日歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java/Android 實現(xiàn)簡單的HTTP服務器

    Java/Android 實現(xiàn)簡單的HTTP服務器

    這篇文章主要介紹了Java/Android 如何實現(xiàn)簡單的HTTP服務器,幫助大家更好的進行功能測試,感興趣的朋友可以了解下
    2020-10-10
  • SpringBoot教程_創(chuàng)建第一個SpringBoot項目

    SpringBoot教程_創(chuàng)建第一個SpringBoot項目

    這篇文章主要介紹了SpringBoot教程_創(chuàng)建第一個SpringBoot項目,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java中容器(頂層容器和中間容器)的布局管理器詳解

    java中容器(頂層容器和中間容器)的布局管理器詳解

    這篇文章主要介紹了java中容器(頂層容器和中間容器)的布局管理器詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java如何將json字符串與實體類互相轉換

    Java如何將json字符串與實體類互相轉換

    在我們調(diào)用三方平臺接口時,經(jīng)常需要將我們封裝的實體類轉換為json作為傳參,下面這篇文章主要給大家介紹了關于Java如何將json字符串與實體類互相轉換的相關資料,需要的朋友可以參考下
    2023-11-11
  • SpringBoot利用Redis解決海量重復提交問題

    SpringBoot利用Redis解決海量重復提交問題

    本文主要介紹了SpringBoot利用Redis解決海量重復提交問題,介紹了三種常見的解決方案,包括使用Redis計數(shù)器,使用Redis分布式鎖和使用Redis發(fā)布/訂閱機制,感興趣的可以了解一下
    2024-03-03
  • 淺談HashMap、HashTable的key和value是否可為null

    淺談HashMap、HashTable的key和value是否可為null

    這篇文章主要介紹了淺談HashMap、HashTable的key和value是否可為null,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 深入分析JAVA Synchronized關鍵字

    深入分析JAVA Synchronized關鍵字

    這篇文章主要介紹了析JAVA Synchronized關鍵字的相關知識,文中代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • 16個SpringBoot擴展接口的總結和實例

    16個SpringBoot擴展接口的總結和實例

    Spring Boot是一個開源的Java框架,它簡化了基于Spring的應用程序的開發(fā)和部署,它提供了許多強大的特性和擴展接口,本文給大家介紹了16個常用的Spring Boot擴展接口,需要的朋友可以參考下
    2023-09-09
  • java使用SFTP上傳文件到資源服務器

    java使用SFTP上傳文件到資源服務器

    這篇文章主要介紹了java使用SFTP上傳文件到資源服務器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SpringBoot security安全認證登錄的實現(xiàn)方法

    SpringBoot security安全認證登錄的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot security安全認證登錄的實現(xiàn)方法,也就是使用默認用戶和密碼登錄的操作方法,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02

最新評論