java代碼萬年歷 java農(nóng)歷日歷

編寫 萬年歷java代碼例如1900年一月一日是星期一。

import?java.util.Calendar;

成都創(chuàng)新互聯(lián)公司是專業(yè)的漠河網(wǎng)站建設(shè)公司,漠河接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行漠河網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

import?java.util.Date;

import?java.util.Scanner;

public?class?MyCalendar

{

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

{

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

String?reg?=?"^(\\d+)[^\\d]+((0?[1-9])|(1[012]))$";

while(true)

{

System.out.println("輸入年月(年和月用非數(shù)字隔開:如2015.1)(什么都不輸入直接退出)");

String?line?=?scanner.nextLine().trim();

if("".equals(line))

{

scanner.close();

break;

}

if(!line.matches(reg))

{

continue;

}

int?year?=?Integer.parseInt(line.replaceAll(reg,?"$1"));

int?month?=?Integer.parseInt(line.replaceAll(reg,?"$2"));

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

Calendar?calendar?=?Calendar.getInstance();

//?這個月的1號是星期幾

calendar.set(year,?month?-?1,?1);

int?day?=?calendar.get(Calendar.DAY_OF_WEEK);

int?start?=?Calendar.SUNDAY;

calendar.add(Calendar.DATE,?-day?+?start);

while(start??day)

{

System.out.print(calendar.get(Calendar.DATE)?+?"\t");

calendar.add(Calendar.DATE,?1);

start++;

}

calendar.set(year,?month?-?1,?1);

Date?now?=?calendar.getTime();

calendar.set(year,?month,?1);

Date?next?=?calendar.getTime();

for(Date?cur?=?now;?cur.before(next);)

{

calendar.setTime(cur);

int?x?=?calendar.get(Calendar.DATE);

String?tmp?=?x??10???"0"?+?x?:?x?+?"";

System.out.print(tmp?+?"\t");

if(calendar.get(Calendar.DAY_OF_WEEK)?==?Calendar.SATURDAY)

{

System.out.println();

}

calendar.add(Calendar.DATE,?1);

cur?=?calendar.getTime();

}

calendar.add(Calendar.DATE,?-1);

int?to?=?calendar.get(Calendar.DAY_OF_WEEK);

int?end?=?Calendar.SATURDAY;

while(to??end)

{

calendar.add(Calendar.DATE,?1);

int?x?=?calendar.get(Calendar.DATE);

String?tmp?=?x??10???"0"?+?x?:?x?+?"";

System.out.print(tmp?+?"\t");

to++;

}

System.out.println();

}

}

}

怎么用JAVA編寫萬年歷!

/*

題目:輸出任意年份任意月份的日歷表(公元后)

思路:

1.已知1年1月1日是星期日,1?%?7?=?1?對應(yīng)的是星期日,2?%?7?=?2?對應(yīng)的是星期一,以此類推;

2.計算當年以前所有天數(shù)+當年當月1號之前所有天數(shù);

a.年份分平年閏年,平年365天,閏年366天;

b.閏年的判斷方法year?%?400?==?0?||?(year?%?100?!=?0??year?%?4?==?0)若為真,則為閏年否則為平年;

c.定義平年/閏年數(shù)組,包含各月天數(shù);

d.遍歷數(shù)組求和,計算當年當月前總天數(shù);

e.當年以前所有天數(shù)+當年當月前總天數(shù)+1即為1年1月1日到當年當月1日的總天數(shù);

3.總天數(shù)對7取模,根據(jù)結(jié)果判斷當月1號是星期幾,輸出空白區(qū)域;

4.輸出當月日歷表,逢星期六換行

*/

import?java.util.Scanner;

class?FindMonthList?{

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

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

System.out.println("請輸入年份:");

int?year?=?sc.nextInt();????????????//年份

if?(year??1)?{????????????????????????//判斷非法輸入年份

System.out.println("輸入錯誤!");

return;

}

System.out.println("請輸入月份:");

int?month?=?sc.nextInt();????????????//月份

if?(month??1?||?month??12)?{????????//判斷非法輸入月份

System.out.println("輸入錯誤!");

return;

}

//輸出表頭

System.out.println("-------"?+?year?+?"?年?"?+?month?+?"?月?"?+?"-------");

System.out.println();

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

//計算當前年份以前所有天數(shù)beforeYearTotalDay;每4年一個閏年,閏年366天,平年365天

int?beforeYearTotalDay?=?((year?-?1)?/?4?*?366)?+?(year-1?-?((year?-?1)?/?4))?*?365;

int[]?arrLeapYear?=?{0,31,29,31,30,31,30,31,31,30,31,30,31};????//閏年各月天數(shù)????int數(shù)組

int[]?arrNormalYear?=?{0,31,28,31,30,31,30,31,31,30,31,30,31};????//平年各月天數(shù)????int數(shù)組

int?beforeMonthTotalDay?=?0;????????????????????????????????????//定義本年當月之前月份的總天數(shù)

if?(year?%?400?==?0?||?(year?%?100?!=?0??year?%?4?==?0))?{????//判斷當前年份是否是閏年

for?(int?i?=?0?;?i??month?;?i?++?)?{????//for循環(huán)計算當月之前總天數(shù)

//計算當前月份之前的所有天數(shù)

beforeMonthTotalDay?=?beforeMonthTotalDay?+?arrLeapYear[i];

}

//判斷當月1日是星期幾

int?totalDay?=?beforeYearTotalDay?+?beforeMonthTotalDay?+?1;

int?week?=?totalDay?%?7;//已知1年1月1日是星期日,即模7得1對應(yīng)的是星期日

for?(int?i?=?0?;?i??(week?-?1?+?7)?%?7?;?i?++)?{????//如果寫成i??(week-1)會出現(xiàn)i-1的情況

System.out.print("????");//輸出開頭空白

}

for?(int?i?=?1?;i?=?arrLeapYear[month]?;i?++?)?{????//for循環(huán)輸出各月天數(shù)

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

if?(i??10?)?{????????//小于10的數(shù)補一個空格,以便打印整齊

System.out.print("?");

}

if?(i?%?7?==?((7-(week?-?1))?%?7?)?||?i?==?arrLeapYear[month])?{//每逢星期六/尾數(shù)換行

System.out.println();

}

}

}?else?{????????//不是閏年就是平年

for?(int?i?=?0?;?i??month?;?i?++?)?{????//for循環(huán)計算出當月之前月份總天數(shù)

beforeMonthTotalDay?=?beforeMonthTotalDay?+?arrNormalYear[i];

}

//判斷當月1日是星期幾

int?totalDay?=?beforeYearTotalDay?+?beforeMonthTotalDay?+?1;

int?week?=?totalDay?%?7;//已知1年1月1日是星期日,即模7得1對應(yīng)的是星期日

for?(int?i?=?0?;?i??(week?-?1?+?7)?%?7?;?i?++)?{????//如果寫成i??(week-1)會出現(xiàn)i-1的情況

System.out.print("????");//輸出開頭空白

}

for?(int?i?=?1?;i?=?arrNormalYear[month]?;i?++?)?{//for循環(huán)輸出各月天數(shù)

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

if?(i??10?)?{????????????//小于10的數(shù)補一個空格,以便打印整齊

System.out.print("?");

}

if?(i?%?7?==?((7-(week?-?1))?%?7?)?||?i?==?arrNormalYear[month])?{//每逢星期六/尾數(shù)換行

System.out.println();

}

}

}

}

}

效果:

JAVA編寫一個多功能萬年歷程序

import java.text.SimpleDateFormat; import java.util.Calendar; public class TestDate { public static final String[] weeks = { "日", "一", "二", "三", "四", "五", "六" }; public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR,2011);//2011年 c.set(Calendar.MONTH,0);//java中Calendar類,月從0開始, 0代表一月 c.set(Calendar.DATE,1);//1號 int day = c.get(Calendar.DAY_OF_WEEK);//獲致是本周的第幾天地, 1代表星期天...7代表星期六 System.out.println(new SimpleDateFormat( "yyyy-MM-dd ").format(c.getTime())); System.out.println("星期" + weeks[day-1]); } } 把以上測試代碼寫作一個方法 方法的參數(shù)名為年月日, 即可。當然Calendar 還有很多功能,比如一周的第幾天,一年的第幾個月……

JAVA萬年歷代碼

/*

題目:輸出任意年份任意月份的日歷表(公元后)

思路:

1.已知1年1月1日是星期日,1?%?7?=?1?對應(yīng)的是星期日,2?%?7?=?2?對應(yīng)的是星期一,以此類推;

2.計算當年以前所有天數(shù)+當年當月1號之前所有天數(shù);

a.年份分平年閏年,平年365天,閏年366天;

b.閏年的判斷方法year?%?400?==?0?||?(year?%?100?!=?0??year?%?4?==?0)若為真,則為閏年否則為平年;

c.定義平年/閏年數(shù)組,包含各月天數(shù);

d.遍歷數(shù)組求和,計算當年當月前總天數(shù);

e.當年以前所有天數(shù)+當年當月前總天數(shù)+1即為1年1月1日到當年當月1日的總天數(shù);

3.總天數(shù)對7取模,根據(jù)結(jié)果判斷當月1號是星期幾,輸出空白區(qū)域;

4.輸出當月日歷表,逢星期六換行

*/

import?java.util.Scanner;

class?FindMonthList?{

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

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

System.out.println("請輸入年份:");

int?year?=?sc.nextInt();????????????//年份

if?(year??1)?{????????????????????????//判斷非法輸入年份

System.out.println("輸入錯誤!");

return;

}

System.out.println("請輸入月份:");

int?month?=?sc.nextInt();????????????//月份

if?(month??1?||?month??12)?{????????//判斷非法輸入月份

System.out.println("輸入錯誤!");

return;

}

//輸出表頭

System.out.println("-------"?+?year?+?"?年?"?+?month?+?"?月?"?+?"-------");

System.out.println();

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

//計算當前年份以前所有天數(shù)beforeYearTotalDay;每4年一個閏年,閏年366天,平年365天

int?beforeYearTotalDay?=?((year?-?1)?/?4?*?366)?+?(year-1?-?((year?-?1)?/?4))?*?365;

int[]?arrLeapYear?=?{0,31,29,31,30,31,30,31,31,30,31,30,31};????//閏年各月天數(shù)????int數(shù)組

int[]?arrNormalYear?=?{0,31,28,31,30,31,30,31,31,30,31,30,31};????//平年各月天數(shù)????int數(shù)組

int?beforeMonthTotalDay?=?0;????????????????????????????????????//定義本年當月之前月份的總天數(shù)

if?(year?%?400?==?0?||?(year?%?100?!=?0??year?%?4?==?0))?{????//判斷當前年份是否是閏年

for?(int?i?=?0?;?i??month?;?i?++?)?{????//for循環(huán)計算當月之前總天數(shù)

//計算當前月份之前的所有天數(shù)

beforeMonthTotalDay?=?beforeMonthTotalDay?+?arrLeapYear[i];

}

//判斷當月1日是星期幾

int?totalDay?=?beforeYearTotalDay?+?beforeMonthTotalDay?+?1;

int?week?=?totalDay?%?7;//已知1年1月1日是星期日,即模7得1對應(yīng)的是星期日

for?(int?i?=?0?;?i??(week?-?1?+?7)?%?7?;?i?++)?{????//如果寫成i??(week-1)會出現(xiàn)i-1的情況

System.out.print("????");//輸出開頭空白

}

for?(int?i?=?1?;i?=?arrLeapYear[month]?;i?++?)?{????//for循環(huán)輸出各月天數(shù)

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

if?(i??10?)?{????????//小于10的數(shù)補一個空格,以便打印整齊

System.out.print("?");

}

if?(i?%?7?==?((7-(week?-?1))?%?7?)?||?i?==?arrLeapYear[month])?{//每逢星期六/尾數(shù)換行

System.out.println();

}

}

}?else?{????????//不是閏年就是平年

for?(int?i?=?0?;?i??month?;?i?++?)?{????//for循環(huán)計算出當月之前月份總天數(shù)

beforeMonthTotalDay?=?beforeMonthTotalDay?+?arrNormalYear[i];

}

//判斷當月1日是星期幾

int?totalDay?=?beforeYearTotalDay?+?beforeMonthTotalDay?+?1;

int?week?=?totalDay?%?7;//已知1年1月1日是星期日,即模7得1對應(yīng)的是星期日

for?(int?i?=?0?;?i??(week?-?1?+?7)?%?7?;?i?++)?{????//如果寫成i??(week-1)會出現(xiàn)i-1的情況

System.out.print("????");//輸出開頭空白

}

for?(int?i?=?1?;i?=?arrNormalYear[month]?;i?++?)?{//for循環(huán)輸出各月天數(shù)

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

if?(i??10?)?{????????????//小于10的數(shù)補一個空格,以便打印整齊

System.out.print("?");

}

if?(i?%?7?==?((7-(week?-?1))?%?7?)?||?i?==?arrNormalYear[month])?{//每逢星期六/尾數(shù)換行

System.out.println();

}

}

}

}

}

顯示效果:

java中,一段萬年歷代碼,跑起來總是差4天,修改之后也只能讓一部分月份的顯示正確,代碼如下

我改造了一下你的代碼 :

package?com.mikuma.calendar;

import?java.util.GregorianCalendar;

import?java.util.Scanner;

public?class?Calendar{

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

int?year?=?0;

int?month?=?0;

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

System.out.println("請輸入您要查詢的年份");

year?=?scanner.nextInt();

System.out.println("請輸入您要查詢的月份");

while?(true){

month?=?scanner.nextInt();

if?(month??0?||?month??12){

System.out.println("月份輸入有誤,請重新輸入");

}else{

break;

}

}

printPermanentCalendar(year,?month);

}

/**

*?輸出萬年歷

*?

*?@param?year

*?@param?month

*/

private?static?void?printPermanentCalendar(int?year,int?month){

int?days?=?0;

int?totaldays?=?0;//獲取1990年至查詢的年份的天數(shù)

for?(int?i?=?1900;?i??year;?i++){

totaldays?=?totaldays?+?(isLeapYear(i)???366?:?365);

}

int?beforedays?=?0;//到指定月份的天數(shù)

for?(int?i?=?1;?i?=?month;?i++){

switch?(i)?{

case?1:

case?3:

case?5:

case?7:

case?8:

case?10:

case?12:

days?=?31;

break;

case?4:

case?6:

case?9:

case?11:

days?=?30;

break;

case?2:

days?=?isLeapYear(year)???29?:?28;

break;

default:

break;

}

if?(i??month){

beforedays?=?beforedays?+?days;

}

}

totaldays?=?totaldays?+?beforedays;//總計天數(shù),以判斷周幾;

int?weekDay?=?0;

int?temp?=?(1?+?totaldays)?%?7;

if?(temp?==?0){//1990年1月1日星期一,據(jù)此日0天星期一,以此類推

weekDay?=?0;

}else{

weekDay?=?temp;

}

System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

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

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

}

for?(int?i?=?1;?i?=?days;?i++){

System.out.print(i?+?"\t");

if?((totaldays?+?i)?%?7?==?6){

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

}

}

}

private?static?boolean?isLeapYear(int?year){

return?new?GregorianCalendar().isLeapYear(year);

}

}

運行:

對比了下 360日歷:

結(jié)果正確

我們再測試下 2017 年 2月

對比 ?360 日歷

也是正確

分享文章:java代碼萬年歷 java農(nóng)歷日歷
網(wǎng)頁網(wǎng)址:http://muchs.cn/article42/docsoec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站改版、營銷型網(wǎng)站建設(shè)做網(wǎng)站、手機網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航

廣告

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

成都app開發(fā)公司