導航:首頁 > 編程語言 > java和歷

java和歷

發布時間:2023-02-26 13:00:19

1. 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]); } } 把以上測試代碼寫作一個方法 方法的參數名為年月日, 即可。當然Calendar 還有很多功能,比如一周的第幾天,一年的第幾個月……

2. 用JAVA編寫一個萬年歷

import java.io.*;
class putout{
public void putout(int f,int x,int y){
int i;
int a[]= new int[40];
System.out.println(" 日 一 二 三 四 五 六 "+" "+f+"月");
for (i=0;i<x;i++)
{System.out.print(" "); }
for(i=x;i<x+y;i++)
a[i]=i-x+1;
for(i=x;i<x+y;i++)
{
if ((i%7==0)&&(i>0))
System.out.print("\n");
if (a[i]<10)
System.out.print(" "+a[i]);
else System.out.print(" "+a[i]);
}
System.out.println("\n");
}
}

class st{
public static void main(String args[])throws IOException{
putout p=new putout();
int year,mouth,y=1,t,i;
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
System.out.print("請輸入一個年份:");
String s=in.readLine();
year=Integer.parseInt(s);
if((year%4==0 && year%100!=0)||(year%400==0))
mouth=1;
else
mouth=0;
y=year;
for(i=1;i<year;i++)
{if((i%4==0 && i%100!=0)||(i%400==0))
y++;}
y=y%7;
for(i=1;i<13;i++){
switch(i){
case 1: {p.putout(1,y,31);y=(y+31)%7;break;}
case 2: {p.putout(2,y,28+mouth);y=(y+28+mouth)%7;break;}
case 3: {p.putout(3,y,31);y=(y+31)%7;break;}
case 4: {p.putout(4,y,30);y=(y+30)%7;break;}
case 5: {p.putout(5,y,31);y=(y+31)%7;break;}
case 6: {p.putout(6,y,30);y=(y+30)%7;break;}
case 7: {p.putout(7,y,31);y=(y+31)%7;break;}
case 8: {p.putout(8,y,31);y=(y+31)%7;break;}
case 9: {p.putout(9,y,30);y=(y+30)%7;break;}
case 10: {p.putout(10,y,31);y=(y+31)%7;break;}
case 11: {p.putout(11,y,30);y=(y+30)%7;break;}
case 12: {p.putout(12,y,31);y=(y+31)%7;break;}
}
}
}
}

3. 用java語言編寫萬年歷

給你一個現成的,我自己寫的。

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("萬年歷");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout bl=new GridLayout(5,7);
JPanel pane=new JPanel();
pane.setLayout(bl);

for (int i=0;i<days;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.length>0)
year=Integer.parseInt(args[0]);
else
year=1982;
if (args.length>1)
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;i<days;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);
}
}

////////////////////
//獲取當前月的天數//
////////////////////
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;
}
}
}

4. 怎麼用JAVA編寫萬年歷!



/*
題目:輸出任意年份任意月份的日歷表(公元後)
思路:
1.已知1年1月1日是星期日,1%7=1對應的是星期日,2%7=2對應的是星期一,以此類推;
2.計算當年以前所有天數+當年當月1號之前所有天數;
a.年份分平年閏年,平年365天,閏年366天;
b.閏年的判斷方法year%400==0||(year%100!=0&&year%4==0)若為真,則為閏年否則為平年;
c.定義平年/閏年數組,包含各月天數;
d.遍歷數組求和,計算當年當月前總天數;
e.當年以前所有天數+當年當月前總天數+1即為1年1月1日到當年當月1日的總天數;
3.總天數對7取模,根據結果判斷當月1號是星期幾,輸出空白區域;
4.輸出當月日歷表,逢星期六換行
*/
importjava.util.Scanner;
classFindMonthList{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入年份:");
intyear=sc.nextInt();//年份
if(year<1){//判斷非法輸入年份
System.out.println("輸入錯誤!");
return;
}
System.out.println("請輸入月份:");
intmonth=sc.nextInt();//月份
if(month<1||month>12){//判斷非法輸入月份
System.out.println("輸入錯誤!");
return;
}
//輸出表頭
System.out.println("-------"+year+"年"+month+"月"+"-------");
System.out.println();
System.out.println("日一二三四五六");

//計算當前年份以前所有天數beforeYearTotalDay;每4年一個閏年,閏年366天,平年365天
intbeforeYearTotalDay=((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};//閏年各月天數int數組
int[]arrNormalYear={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年各月天數int數組
intbeforeMonthTotalDay=0;//定義本年當月之前月份的總天數
if(year%400==0||(year%100!=0&&year%4==0)){//判斷當前年份是否是閏年
for(inti=0;i<month;i++){//for循環計算當月之前總天數
//計算當前月份之前的所有天數
beforeMonthTotalDay=beforeMonthTotalDay+arrLeapYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrLeapYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrLeapYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}

}else{//不是閏年就是平年
for(inti=0;i<month;i++){//for循環計算出當月之前月份總天數
beforeMonthTotalDay=beforeMonthTotalDay+arrNormalYear[i];
}
//判斷當月1日是星期幾
inttotalDay=beforeYearTotalDay+beforeMonthTotalDay+1;
intweek=totalDay%7;//已知1年1月1日是星期日,即模7得1對應的是星期日
for(inti=0;i<(week-1+7)%7;i++){//如果寫成i<(week-1)會出現i<-1的情況
System.out.print("");//輸出開頭空白
}
for(inti=1;i<=arrNormalYear[month];i++){//for循環輸出各月天數
System.out.print(i+"");
if(i<10){//小於10的數補一個空格,以便列印整齊
System.out.print("");
}
if(i%7==((7-(week-1))%7)||i==arrNormalYear[month]){//每逢星期六/尾數換行
System.out.println();
}
}
}
}
}

效果:

5. 在java里怎麼做萬年歷,一年的啊

先上張效果圖:以下是實現代碼:/*日歷*/
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" }; // 存放月份的字元數組

String[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 存放星期的字元數組
Calendar ca = Calendar.getInstance();
Container contentPane = getContentPane();
Vector<String> vector = new Vector<String>();
String[][] date = new String[6][7]; // 表格的顯示數據的格式
TextField tf; // 文本框的值代表的是年份
JComboBox jb;
JTable table; // 把日期用table的方式顯示出來

public void getDate(String year, String month, String week, int Max_Day) {
int n = 0, b = 0;

// 動態把傳進來月份的天數存放到容器里
for (int j = 1; j <= Max_Day; j++) {
vector.add(String.valueOf(j));
}

//每次往table里添加數據的時候,都預先把原table里 的 數據清空
for(int x = 0;x<date.length;x++){
for(int y = 0;y<date[x].length;y++){
date[x][y] = null;
}
}

// 根據傳進來月份的第一天是星期幾,來構建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;
}
}

// 把容器里的數據全部清除,以備下次再存放新的數據
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)); // 得到當前的系統時間的年份,並把這個數值存放到year這個變數里
String month = String.valueOf(ca.get(Calendar.MONTH) + 1); // 得到當前的系統時間的月份,並把這個數值存放到month這個變數里
String day = String.valueOf(ca.get(Calendar.DATE)); // 得到當前的系統時間的日期,並把這個數值存放到day這個變數里

ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 得到當前系統時間月份有多少天
getDate(year, month, week, Max_Day);

// 從月份數組里取出與當前系統時間一樣的月份值
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.(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(); // 調用內部類PaintThread,根據裡面的設置來重畫

}

public static void main(String[] args) {
Demo28 d28 = new Demo28();
d28.paint();
}

// 滑鼠單擊左邊按鈕觸發的事件
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設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的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設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca
.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
} catch (NumberFormatException excption) {
System.out.println("你輸入的年份不正確!");
}

}

}

// 滑鼠單擊右邊按鈕觸發的事件
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設置為用戶設置的年份
String new_month = (String) jb.getSelectedItem(); // 得到月份值
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的MONTH設置為用戶設置的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的Calendar對象計算這個月份有多少天
getDate(new_year, new_month, new_week, Max_Day);
}
}

// 滑鼠單擊選擇框觸發的事件
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(); // 得到用戶設置的月份
ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar對象的月份值設置為用戶定義的月份
ca.set(Calendar.DATE, 1); // 把Calendar 對象的DATA設置為1
String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根據設置的Calendar對象,計算出這個月第一天是星期幾
int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根據設置後的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和歷相關的資料

熱點內容
程序員那麼可愛陸漓和姜逸城吻戲 瀏覽:802
android獲取窗口大小 瀏覽:180
程序員為世界帶來的貢獻 瀏覽:214
程序員招聘自薦信 瀏覽:693
魔獸鍵位設置命令宏 瀏覽:645
程序員沒有目標了 瀏覽:828
搶答器c程序編程 瀏覽:703
什麼app可以自己玩 瀏覽:76
刨客app是什麼 瀏覽:963
cad輸入命令欄不見了 瀏覽:834
做故事集可以用什麼app 瀏覽:692
qq郵箱發送壓縮包 瀏覽:672
程序員桌面機器人 瀏覽:589
xjr快速開發平台源碼 瀏覽:159
java介面runnable 瀏覽:31
python怎麼運行web伺服器 瀏覽:349
notepad編程代碼 瀏覽:740
什麼安卓的毛病最少 瀏覽:611
hp的pjl設備訪問命令 瀏覽:635
googlewebp圖片壓縮技術 瀏覽:215