萬(wàn)年歷工具java源代碼 編寫(xiě)萬(wàn)年歷的代碼

JAVA萬(wàn)年歷代碼

/*

為廬江等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及廬江網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站制作、廬江網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

思路:

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

2.計(jì)算當(dāng)年以前所有天數(shù)+當(dāng)年當(dāng)月1號(hào)之前所有天數(shù);

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

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

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

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

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

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

4.輸出當(dāng)月日歷表,逢星期六換行

*/

import?java.util.Scanner;

class?FindMonthList?{

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

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

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

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

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

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

return;

}

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

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

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

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

return;

}

//輸出表頭

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

System.out.println();

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

//計(jì)算當(dāng)前年份以前所有天數(shù)beforeYearTotalDay;每4年一個(gè)閏年,閏年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;????????????????????????????????????//定義本年當(dāng)月之前月份的總天數(shù)

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

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

//計(jì)算當(dāng)前月份之前的所有天數(shù)

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

}

//判斷當(dāng)月1日是星期幾

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

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

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

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

}

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

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

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

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)計(jì)算出當(dāng)月之前月份總天數(shù)

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

}

//判斷當(dāng)月1日是星期幾

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

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

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

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

}

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

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

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

System.out.print("?");

}

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

System.out.println();

}

}

}

}

}

顯示效果:

用java語(yǔ)言編寫(xiě)萬(wàn)年歷

給你一個(gè)現(xiàn)成的,我自己寫(xiě)的。

import java.awt.*;

import java.util.*;

import javax.swing.*;

import java.awt.event.*;

public class WanNianLi extends JFrame implements ActionListener {

private static int year,month,days;

private JButton[] btn=new JButton[days];

WanNianLi() {

super("萬(wàn)年歷");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GridLayout bl=new GridLayout(5,7);

JPanel pane=new JPanel();

pane.setLayout(bl);

for (int i=0;idays;i++) {

int temp=i+1;

btn[i]=new JButton(""+temp);

btn[i].addActionListener(this);

pane.add(btn[i]);

}

setContentPane(pane);

pack();

setLookAndFeel();

setVisible(true);

}

public static void main(String[] args) {

if (args.length0)

year=Integer.parseInt(args[0]);

else

year=1982;

if (args.length1)

month=Integer.parseInt(args[1]);

else

month=1;

GetDays gd=new GetDays(year,month);

days=gd.getDays();

new WanNianLi();

}

public void actionPerformed(ActionEvent evt) {

Object src=evt.getSource();

for (int i=0;idays;i++)

if (src==btn[i]) {

int day=i+1;

GetWeekday gw=new GetWeekday(year,month,day);

String str="";

switch (gw.getWeekday()) {

case 1:

str="天";

break;

case 2:

str="一";

break;

case 3:

str="二";

break;

case 4:

str="三";

break;

case 5:

str="四";

break;

case 6:

str="五";

break;

case 7:

str="六";

break;

}

setTitle(year+"年"+month+"月"+day+"日"+"星期"+str);

repaint();

}

}

private void setLookAndFeel() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

SwingUtilities.updateComponentTreeUI(this);

}catch(Exception e){

System.out.print(e.toString());

}

}

}

//////////////

//獲取星期幾//

//////////////

class GetWeekday {

private Calendar cal=Calendar.getInstance();

private static int weekday;

public int getWeekday() {

return weekday;

}

GetWeekday(int y,int m,int d) {

cal.clear();

cal.set(Calendar.YEAR,y);

cal.set(Calendar.MONTH,m-1);

cal.set(Calendar.DAY_OF_MONTH,d);

weekday=cal.get(Calendar.DAY_OF_WEEK);

}

}

////////////////////

//獲取當(dāng)前月的天數(shù)//

////////////////////

class GetDays {

private static int days;

public int getDays() {

return days;

}

GetDays(int y,int m) {

GregorianCalendar gc=new GregorianCalendar();

switch (m) {

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:

if (gc.isLeapYear(y))

days=29;

else

days=28;

break;

}

}

}

怎么用java for循環(huán)打印萬(wàn)年歷基礎(chǔ)源代碼

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class CalenderTrain extends JFrame implements ActionListener {

JComboBox Month = new JComboBox(); //月份下拉列表框

JComboBox Year = new JComboBox(); //年份下拉列表框

JLabel Year_l = new JLabel("Year::"); //定義標(biāo)簽

JLabel Month_l = new JLabel("Month::"); //定義標(biāo)簽

Date now_date = new Date(); //獲取今天的日期

JButton[] button_day = new JButton[49]; //定義一個(gè)數(shù)組用來(lái)存放日期

JButton button_ok = new JButton("Enter"); //現(xiàn)實(shí)選擇日期

JButton button_today = new JButton("Today"); //顯示今天按鈕

int now_year = now_date.getYear() + 1900; //獲取年份值

int now_month = now_date.getMonth(); //獲取月份值(當(dāng)前月份-1)

String year_int = null; //存放年份

int month_int; //存放月份

JPanel pane_ym = new JPanel(); //放置下拉列表框和控制按鈕面板

JPanel pane_day = new JPanel(); //放置日期面板

JPanel pane_parent = new JPanel(); //放置以上兩個(gè)面板

//定義方法繪制面板

public CalenderTrain() {

super("Calender!"); //設(shè)定面板得title

//---以下幾行使得關(guān)閉面板時(shí)退出程序

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

System.exit(0);

}

});

//---

setResizable(false); //面板的大小不能變化

//設(shè)定年月

/*年份的區(qū)間是當(dāng)前年份的過(guò)去10年到當(dāng)前年份的未來(lái)20年

* 月份正常1??12月

*/

for (int i = now_year - 10; i = now_year + 20; i++) {

Year.addItem(i + "");

}

for (int i = 1; i 13; i++) {

Month.addItem(i + "");

}

Year.setSelectedIndex(10);//設(shè)定年份下拉列表為當(dāng)前年份

pane_ym.add(Year_l);//添加年份標(biāo)簽

pane_ym.add(Year);//添加年份下拉列表框

Month.setSelectedIndex(now_month);//設(shè)定月份下拉列表為當(dāng)前月份

pane_ym.add(Month_l);//添加月份標(biāo)簽

pane_ym.add(Month);//添加月份下拉列表框

pane_ym.add(button_ok);//添加確定按鈕

pane_ym.add(button_today);//添加“今天”按鈕

button_ok.addActionListener(this);//確定按鈕添加監(jiān)聽(tīng)事件

button_today.addActionListener(this);//“今天”按鈕添加監(jiān)聽(tīng)事件

//年月設(shè)定結(jié)束

//初始化日期按鈕并繪制

pane_day.setLayout(new GridLayout(7, 7, 10, 10));

for (int i = 0; i 49; i++) {

button_day[i] = new JButton(" ");

pane_day.add(button_day[i]);

}

this.setDay();//調(diào)用setDay()方法

pane_parent.setLayout(new BorderLayout());//設(shè)定布局管理器

setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH);

setContentPane(pane_parent);

pack();

show();

}

void setDay() {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

int year_sel = Integer.parseInt(year_int) - 1900;//獲得年份值

Date dt = new Date(year_sel, month_int, 1);//構(gòu)造一個(gè)日期

GregorianCalendar cal = new GregorianCalendar();//創(chuàng)建一個(gè)Calendar實(shí)例

cal.setTime(dt);

String week[] = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };

int day = 0;//day中存放某個(gè)月份的天數(shù)

int day_week = 0;//用來(lái)存放某個(gè)月的第一天是星期幾的數(shù)值

//--將星期添加到前7個(gè)按鈕中

for (int i = 0; i 7; i++) {

button_day[i].setText(week[i]);

}

//--

/*判斷是幾月份,根據(jù)它來(lái)設(shè)定day的值

* 其中二月份要判斷是否是閏年

*/

if (month_int == 0

|| month_int == 2

|| month_int == 4

|| month_int == 6

|| month_int == 7

|| month_int == 9

|| month_int == 11) {

day = 31;

} else if (

month_int == 3

|| month_int == 5

|| month_int == 8

|| month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

int count = 1;

/*繪制按鈕

* 在這里我們首先要根據(jù)選定的月份的第一天是星期幾來(lái)確定我們繪制按鈕的起始位置

* 其中day_week就是我們要繪制的起始位置

* 對(duì)于那些沒(méi)有數(shù)值可以顯示的按鈕要置空

*/

for (int i = day_week; i day_week + day; count++, i++) {

if (i % 7 == 0

|| i == 13

|| i == 20

|| i == 27

|| i == 48

|| i == 34

|| i == 41) {

button_day[i].setForeground(Color.RED);

button_day[i].setText(count + "");

} else {

button_day[i].setText(count + "");

}

}

//--對(duì)于沒(méi)有日期數(shù)值顯示的按鈕進(jìn)行置空處理

if (day_week == 0) {

for (int i = day; i 49; i++) {

button_day[i].setText(" ");

}

} else {

//第一天前面的按鈕置空

for (int i = 7; i day_week; i++) {

button_day[i].setText(" ");

}//最后一天后面的按鈕置空

for (int i = day_week + day; i 49; i++) {

button_day[i].setText(" ");

}

}

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button_ok) {

this.setDay();//如果點(diǎn)擊確定按鈕就調(diào)用setDay()重新方法繪制按鈕

} else if (e.getSource() == button_today) {

new CalenderTrain();//如果點(diǎn)擊今天按鈕,得到今天的日期

}

}

public static void main(String[] args) {

CalenderTrain ct = new CalenderTrain();

}

}

java萬(wàn)年歷源代碼是多少?

package org.java.test;

import java.util.Scanner;

public class CalendarTest{

public static void main(String[] args) {

System.out.println("歡 迎 使 用 萬(wàn) 年 歷");

Scanner input = new Scanner(System.in);

System.out.print("\n請(qǐng)選擇年份: ");

int year = input.nextInt();

System.out.print("\n請(qǐng)選擇月份: ");

int month = input.nextInt();

System.out.println();

int days = 0; // 存儲(chǔ)當(dāng)月的天數(shù)

boolean isRn;

/* 判斷是否是閏年 */

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

isRn = true; // 閏年

} else {

isRn = false;// 平年

}

/* 計(jì)算輸入的年份之前的天數(shù) */

int totalDays = 0;

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

/* 判斷閏年或平年,并進(jìn)行天數(shù)累加 */

if (i % 4 == 0 !(i % 100 == 0) || i % 400 == 0) { // 判斷是否為閏年

totalDays = totalDays + 366; // 閏年366天

} else {

totalDays = totalDays + 365; // 平年365天

}

}

/* 計(jì)算輸入月份之前的天數(shù) */

int beforeDays = 0;

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 2:

if (isRn) {

days = 29;

} else {

days = 28;

}

break;

default:

days = 30;

break;

}

if (i month) {

beforeDays = beforeDays + days;

}

}

totalDays = totalDays + beforeDays; // 距離1900年1月1日的天數(shù)

/* 計(jì)算星期幾 */

int firstDayOfMonth; // 存儲(chǔ)當(dāng)月第一天是星期幾:星期日為0,星期一~星期六為1~6

int temp = 1 + totalDays % 7; // 從1900年1月1日推算

if (temp == 7) { // 求當(dāng)月第一天

firstDayOfMonth = 0; // 周日

} else {

firstDayOfMonth = temp;

}

/* 輸出日歷 */

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

for (int nullNo = 0; nullNo firstDayOfMonth; nullNo++) {

System.out.print("\t"); // 輸出空格

}

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

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

if ((totalDays + i-1) % 7 == 5) { // 如果當(dāng)天為周六,輸出換行

System.out.println();

}

}

}

}

這是你要的萬(wàn)年歷嗎?

新聞名稱:萬(wàn)年歷工具java源代碼 編寫(xiě)萬(wàn)年歷的代碼
瀏覽路徑:http://muchs.cn/article8/dohogip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、移動(dòng)網(wǎng)站建設(shè)、建站公司、域名注冊(cè)、商城網(wǎng)站網(wǎng)站建設(shè)

廣告

聲明:本網(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)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司