java 輸出當月日歷_java 實現打印當前月份的日歷

Center

實現當前日歷的打印,當前日期用*來表示。

關鍵得出這個月的第一天是星期幾。

基姆拉爾森計算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日數+1,m表示月份數。y表示年數。

注意1:在公式中有個與其它公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,

例:假設是2004-1-10則換算成:2003-13-10來代入公式計算。

注意2:在大多數天主教國家的日歷中,在1752年沒有9.3-9.13。在這一年的日歷中9月2號

后面直接就是9月14號,所以在計算某天是星期幾的算法中要把這一特殊情況考慮在內

package work_0529;

import java.util.Scanner;

public class main {

private static int year;

private static int month;

private static int day;

private static boolean flag;

private static int count;//當前月份的天數

public static void main(String[] args) {

if(!getInput()) return;

if(!judgeData()) return;

int a = getData();

System.out.println("日 一 二 三 四 五 六");

int j=0;

while(a-- > 0){ System.out.print(" "); j++;}

for(int i=1;i <= count; i++)

{

if(j%7==0)System.out.println("\n");

j++;

System.out.print(String.format("%4d",i));

if(day==i)System.out.print("*");

}

}

private static boolean judgeData() {

flag=false;// false表示平年。反之

if(year%100==0) flag=true;

else if(year%4==0) flag=true;

if(year<=0){

System.out.println("年份不能小于等于0");

return false;

}

if(month<=0 || month>12){

System.out.println("檢查月份的范圍");

return false;

}

if(month==2){

if(flag && day>29){

System.out.println("當前為"+(flag?"閏年":"平年")+"二月份不能大于29");

return false;

}

if(!flag && day > 28){

System.out.println("當前為"+(flag?

"閏年":"平年")+"二月份不能大于28");

return false;

}

if(flag) count=29;

else count=28;

}

if(month==1 || month==3 || month==5|| month==7|| month==8|| month==10|| month==12)

{

if(day<=0 || day > 31){

System.out.println("檢查日期的范圍");

return false;

}

count =31;

}

else if(month!=2){

if(day<=0 || day>30){

System.out.println("檢查日期的范圍");

return false;

}

count = 30;

}

return true;

}

private static int getData() {

int tmpDay=1;// 表示

int a;

if (month == 1 || month == 2) { month += 12; year--; }

if((year<1752) || (year==1752 && month<9) ||

(year==1752 && month==9 && tmpDay<3)){

a = (tmpDay + 2*month + 3*(month+1)/5 + year + year/4 +5) % 7;

}else{

a = (tmpDay + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400)%7;

}

return a;

}

private static boolean getInput() {

try {

System.out.print("請輸入日期(格式XXXX-XX-XX):");

Scanner scanner = new Scanner(System.in);

String str = scanner.nextLine();

year = Integer.parseInt(str.substring(0, str.indexOf('-')));

str = str.substring(str.indexOf('-') + 1, str.length());

month = Integer.parseInt(str.substring(0, str.indexOf('-')));

str = str.substring(str.indexOf('-') + 1, str.length());

day = Integer.parseInt(str);

return true;

} catch (NumberFormatException e) {

System.out.println("格式錯誤");

} catch (StringIndexOutOfBoundsException e2) {

System.out.println("格式錯誤");

}

return false;

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/528978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/528978.shtml
英文地址,請注明出處:http://en.pswp.cn/news/528978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pythonmessage用法_請問Mac下如何用python讀取iMessage信息?

很早之前&#xff0c;學習Python web編程的時候&#xff0c;就涉及一個Python的urllib。可以用urllib.urlopen(“url”)。read()可以輕松讀取頁面上面的靜態信息。但是&#xff0c;隨著時代的發展&#xff0c;也來越多的網頁中更多的使用javascript、jQuery、PHP等語言動態生成…

xmlhttprequest 跨域_跨域資源共享(CORS)安全性

跨域資源共享(CORS)安全性背景 提起瀏覽器的同源策略&#xff0c;大家都很熟悉。不同域的客戶端腳本不能讀寫對方的資源。但是實踐中有一些場景需要跨域的讀寫&#xff0c;所以出現了一些hack的方式來跨域。比如在同域內做一個代理&#xff0c;JSON-P等。但這些方式都存在缺陷&…

java 圖片識別 tess4j_圖像文字識別(四):java調用tess4j識別圖像文字

轉自&#xff1a;https://blog.csdn.net/a745233700/article/details/80203340javajava調用tess4j識別圖像文字Tesseract-OCR支持中文識別&#xff0c;而且開源和提供全套的訓練工具&#xff0c;是快速低成本開發的首選。前面記錄過在java中調用tesseract-orc&#xff0c;該方法…

sql in轉換為join_同一個SQL語句,為啥性能差異咋就這么大呢?(1分鐘系列)

《數據庫允許空值&#xff0c;往往是悲劇的開始》一文通過explain來分析SQL的執行計劃&#xff0c;來分析null對索引命中情況的影響&#xff0c;有不少朋友留言&#xff0c;問explain結果中的type字段&#xff0c;ref&#xff0c;ALL等不一樣的值究竟是什么含義。今天花1分鐘簡…

java rmi接口 超時設置_Spring RMI客戶端讀超時設置 | 學步園

標準Java的RMI設置我所知道的有三種方式&#xff0c;其中第1、2種不區分框架均適用&#xff0c;但影響整個JVM級別的RMI服務1. 啟動時設置sun.rmi.transport.tcp.responseTimeout&#xff0c;單位是毫秒java -Dsun.rmi.transport.tcp.responseTimeout502.在應用程序中設置環境變…

python黑客庫長安十二時辰 更新_【Python成長之路】python 從零學爬蟲 -- 沒時間看《長安十二時辰》電視劇怎么辦?直接爬取所有劇情吧!...

【寫在前面】最近大火的《長安十二時辰》真的是好看&#xff0c;算的是良心網劇了。但是由于平時工作時間較長&#xff0c;經常無法準時追劇&#xff0c;并且又因為不想見到元裁那對挨千刀的(作為演員&#xff0c;演技是值得肯定的&#xff0c;角色演繹的讓人看的心煩)。因此就…

java字符串筆試題_五道Java常見筆試題及答案匯總

1、String和StringBuffer的區別&#xff1f;答&#xff1a;Java平臺提供了兩個類&#xff1a;String和StringBuffer&#xff0c;它們可以儲存和操作字符串&#xff0c;即包含多個字符的字符數據。這個String類提供了數值不可改變的字符串。而這個StringBuffer類提供的字符串進行…

遙感原理與應用孫家炳_2.2遙感應用模型

章節概覽遙感應用模型是遙感的一種定量化手段&#xff0c;通常在遙感領域有一個更廣為人知的名詞——定量遙感。但是定量遙感是一種方法模型而非技術手段&#xff0c;隨著科學的發展&#xff0c;熱門越來越體會到定量遙感的必要性。定量遙感的應用是十分廣泛的&#xff0c;也是…

python升級命令debian_debian python 2.7.11 升級

首先下載源tar包可利用linux自帶下載工具wget下載&#xff0c;如下所示&#xff1a;下載完成后到下載目錄下&#xff0c;解壓tar -zxvf Python-2.7.11.tgz進入解壓縮后的文件夾cdPython-2.7.11在編譯前先在/wp-content/local建一個文件夾python27(作為python的安裝路徑&#xf…

mysql必學十大必會_MYSQL 學習(一)--啟蒙篇《MYSQL必知必會》

MYSQL必知必會一. DDL 數據定義語言Data Definition Language 是指CREATE&#xff0c;ALTER和DROP語句。DDL允許添加/修改/刪除包含數據的邏輯結構&#xff0c;或允許用戶訪問/維護數據(數據庫&#xff0c;表&#xff0c;鍵&#xff0c;視圖......)的邏輯結構。DDL是關于“元數…

python連接wifi_python 自動重連wifi windows的方法

如下所示&#xff1a;# codingutf-8import urllib2import urllibfrom cookielib import CookieJarimport osimport reimport timeclass ConnectWeb(object):def __init__(self):self.cookiejarinmemory CookieJar()self.opener urllib2.build_opener(urllib2.HTTPCookieProce…

java for新循環_Java 8 新語法習慣 (for 循環的函數替代方案)

我們看這樣一個示例public class ForDemo {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("Get set...");for (int i 0; i < 4; i) {System.out.println(i"...");}}}測試結果Get set...0...1...2...…

喜馬拉雅 xm文件轉m4a_喜馬拉雅電臺、課程語音如何轉成文字?

今天看了一篇文章“AI面前人類一敗涂地”就是說了AI的發展讓所有的事情幾乎都可以實現科技化&#xff0c;無需人工操作&#xff0c;工作效率還比人工要高很多。這樣說來的確是這樣。語音轉換也是其中一門技術&#xff0c;人們現在對于語音的交流很多&#xff0c;比如社交軟件的…

java url特殊字符轉義字符_URL中包含有特殊字符,進行轉義

String temp URLEncoder.encode(json);URL中的特殊字符有些符號在URL中是不能直接傳遞的&#xff0c;如果要在URL中傳遞這些特殊符號&#xff0c;那么就要使用他們的編碼了。編碼的格式為&#xff1a;%加字符的ASCII碼&#xff0c;即一個百分號%&#xff0c;后面跟對應字符的A…

java 多重注解_Java注解-元數據、注解分類、內置注解和自定義注解

大家好&#xff0c;我是樂字節的小樂&#xff0c;上次說過了Java多態的6大特性|樂字節&#xff0c;接下來我們來看看Java編程里的注解。Java注解有以下幾個知識點&#xff1a;元數據注解的分類內置注解自定義注解注解處理器Servlet3.0本文先介紹前面4個知識點&#xff1a;元數據…

python getattr函數_Python中的getattr()函數詳解

在計算機編程中&#xff0c;自省是指這種能力&#xff1a;檢查某些事物以確定它是什么、它知道什么以及它能做什么。自省向程序員提供了極大的靈活性和控制力。自省(introspection)&#xff0c;在計算機編程領域里&#xff0c;是指在運行時來判斷一個對象的類型的能力。它是Pyt…

ie8不兼容java項目_常見IE8兼容性問題及解決

1、css3媒體查詢IE8不支持媒體查詢解決&#xff1a;respond.js&#xff0c;在頁面中所有css文件的引用位置之后引用Respond.js2、HTML5新標簽IE8不支持H5新標簽解決&#xff1a;html5shiv.js&#xff0c;在頁面中引用html5shiv.js文件。必須添加在頁面的元素內&#xff0c;因為…

python對圖像二值化_python如何二值化圖像

在python中二值化圖像的方法&#xff1a;首先將圖片轉化為灰色圖像&#xff1b;然后自定義灰度界限&#xff1b;最后輸入“photoImg.point(table,1)”命令(table為自己創建的數組名)即可二值化圖像。# 圖片二值化代碼如下&#xff1a;from PIL import Imageimg Image.open(tes…

Java快速提升_java快速復習 一 基礎語法

最近看很多算法書&#xff0c;比較不錯的有不少都是java語言描述&#xff0c;所以用一天時間快速研究并整理java &#xff0c;參考資料&#xff1a;java入門經典Call this file "Example2.java".class Example2 {public static void main(String args[]) {int a&…

酷狗音樂linux版_酷狗音樂概念版APP內測獲用戶好評:極簡化,更高級

這兩天在網上沖浪的時候&#xff0c;發現不少網友都在安利一個叫做“酷狗音樂概念版”的APP&#xff0c;難道是酷狗又在悶聲搞大事了&#xff1f;搜了一下發現&#xff0c;原來是酷狗音樂概念版APP已經開始進入內測階段&#xff0c;嘗試著下載使用&#xff0c;果然發現“更酷更…