java代碼輸出萬年歷 java輸出月歷

怎么用JAVA編寫萬年歷!

/*

成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、玉田網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為玉田等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

思路:

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萬年歷代碼

/*

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

思路:

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代碼例如1900年一月一日是星期一。

import?java.util.Calendar;

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里怎么做萬年歷,一年的啊

先上張效果圖:以下是實現(xiàn)代碼:/*日歷*/

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import java.util.regex.Pattern;

import javax.swing.*;

public class Demo28 extends JFrame {

int m = 1;

String[] monthchoose = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"11", "12" }; // 存放月份的字符數(shù)組

String[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 存放星期的字符數(shù)組

Calendar ca = Calendar.getInstance();

Container contentPane = getContentPane();

VectorString vector = new VectorString();

String[][] date = new String[6][7]; // 表格的顯示數(shù)據(jù)的格式

TextField tf; // 文本框的值代表的是年份

JComboBox jb;

JTable table; // 把日期用table的方式顯示出來

public void getDate(String year, String month, String week, int Max_Day) {

int n = 0, b = 0;

// 動態(tài)把傳進來月份的天數(shù)存放到容器里

for (int j = 1; j = Max_Day; j++) {

vector.add(String.valueOf(j));

}

//每次往table里添加數(shù)據(jù)的時候,都預(yù)先把原table里 的 數(shù)據(jù)清空

for(int x = 0;xdate.length;x++){

for(int y = 0;ydate[x].length;y++){

date[x][y] = null;

}

}

// 根據(jù)傳進來月份的第一天是星期幾,來構(gòu)建Table

for (int a = Integer.parseInt(week) - 1; a date[0].length; a++) {

date[0][a] = new String((String) vector.toArray()[n]);

n++;

}

for (int i = 1; i date.length; i++) {

for (int j = 0; j date[i].length; j++) {

if (n vector.size()) {

date[i][j] = new String((String) vector.toArray()[n]);

n++;

} else

break;

}

}

// 把容器里的數(shù)據(jù)全部清除,以備下次再存放新的數(shù)據(jù)

while (b vector.size()) {

vector.remove(b);

}

}

public void chooseDate(String day) {

JLabel label = new JLabel();

for (int y = 0; y date.length; y++) {

for (int z = 0; z date[y].length; z++) {

System.out.print(date[y][z] + " ");

System.out.println(day);

if (date[y][z] != null) {

if (date[y][z].equals(day)) {

table.setSelectionBackground(Color.yellow);

return;

}

}

}

}

}

public void paint() {

setTitle("日歷");

setBounds(200, 200, 350, 178);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

int m = 0;

String year = String.valueOf(ca.get(Calendar.YEAR)); // 得到當前的系統(tǒng)時間的年份,并把這個數(shù)值存放到y(tǒng)ear這個變量里

String month = String.valueOf(ca.get(Calendar.MONTH) + 1); // 得到當前的系統(tǒng)時間的月份,并把這個數(shù)值存放到month這個變量里

String day = String.valueOf(ca.get(Calendar.DATE)); // 得到當前的系統(tǒng)時間的日期,并把這個數(shù)值存放到day這個變量里

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設(shè)置為1

String week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對象,計算出這個月第一天是星期幾

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 得到當前系統(tǒng)時間月份有多少天

getDate(year, month, week, Max_Day);

// 從月份數(shù)組里取出與當前系統(tǒng)時間一樣的月份值

for (int i = 0; i monthchoose.length; i++) {

if (monthchoose[i].equals(month)) {

m = i;

}

}

JToolBar toolBar = new JToolBar();

JButton b1 = new JButton("<");

b1.addMouseListener(new myMouseListener1());

JButton b2 = new JButton(">");

b2.addMouseListener(new myMouseListener2());

JLabel j1 = new JLabel("年");

JLabel j2 = new JLabel("月");

tf = new TextField(5);

tf.addKeyListener(new myKeyListener());

tf.setText(year);

jb = new JComboBox(monthchoose);

jb.setSelectedIndex(m);

jb.addActionListener(new myActionListener3());

table = new JTable(date, columnNames);

//table.addMouseListener(new tableMouseListener());

table.setPreferredScrollableViewportSize(new Dimension(350, 150));

JScrollPane jsp = new JScrollPane(table);

contentPane.add(jsp, BorderLayout.CENTER);

chooseDate(day);

toolBar.add(b1);

toolBar.add(tf);

toolBar.add(b2);

toolBar.add(j1);

toolBar.add(jb);

toolBar.add(j2);

toolBar.setLocation(0, 0);

toolBar.setSize(400, 15);

contentPane.add(toolBar, BorderLayout.NORTH);

setVisible(true);

new Thread(new PaintThread()).start(); // 調(diào)用內(nèi)部類PaintThread,根據(jù)里面的設(shè)置來重畫

}

public static void main(String[] args) {

Demo28 d28 = new Demo28();

d28.paint();

}

// 鼠標單擊左邊按鈕觸發(fā)的事件

class myMouseListener1 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

String str = tf.getText().trim(); // 得到文本框的值

int i = Integer.parseInt(str);

i = i - 1;

tf.setText(String.valueOf(i));

String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到變量new_year里

ca.set(Calendar.YEAR, i); // 把Calendar 對象的YEAR設(shè)置為用戶設(shè)置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設(shè)置為用戶設(shè)置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設(shè)置為1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對象,計算出這個月第一天是星期幾

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對象計算這個月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

class myKeyListener extends KeyAdapter {

public void keyReleased(KeyEvent e) {

try {

int i = Integer.parseInt(tf.getText().trim());

int key = e.getKeyCode();

if (key == KeyEvent.VK_ENTER) {

String new_year = String.valueOf(i);

ca.set(Calendar.YEAR, i); // 把Calendar對象的YEAR設(shè)置為用戶設(shè)置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設(shè)置為用戶設(shè)置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設(shè)置為1

String new_week = String.valueOf(ca

.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對象,計算出這個月第一天是星期幾

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對象計算這個月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

} catch (NumberFormatException excption) {

System.out.println("你輸入的年份不正確!");

}

}

}

// 鼠標單擊右邊按鈕觸發(fā)的事件

class myMouseListener2 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

String str = tf.getText().trim();

int i = Integer.parseInt(str);

i = i + 1;

tf.setText(String.valueOf(i));

String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到變量new_year里

ca.set(Calendar.YEAR, i); // 把Calendar 對象的YEAR設(shè)置為用戶設(shè)置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設(shè)置為用戶設(shè)置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設(shè)置為1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對象,計算出這個月第一天是星期幾

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對象計算這個月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

// 鼠標單擊選擇框觸發(fā)的事件

class myActionListener3 implements ActionListener {

public void actionPerformed(ActionEvent e) {

String new_year = String.valueOf(ca.get(Calendar.YEAR)); // 把表示年份的文本框的值存放到變量new_year里

String new_month = (String) jb.getSelectedItem(); // 得到用戶設(shè)置的月份

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的月份值設(shè)置為用戶定義的月份

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設(shè)置為1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據(jù)設(shè)置的Calendar對象,計算出這個月第一天是星期幾

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據(jù)設(shè)置后的Calendar對象計算這個月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

// 重畫組件

private class PaintThread implements Runnable {

public void run() {

while (true) {

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

分享名稱:java代碼輸出萬年歷 java輸出月歷
文章出自:http://bm7419.com/article40/ddccheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化響應(yīng)式網(wǎng)站、移動網(wǎng)站建設(shè)微信公眾號、網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)

廣告

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

搜索引擎優(yōu)化