一,java::
軟件包日曆;導入java.util.scanner; //日曆項目公共類rili {public static void main(string [] args){scanner a = new scanner(system.in); system.out.println(“:”); int年= a.nextint(); system.out.println(“:”); int月= a.nextint(); int sum = 0; for(int i = 1900; i <年; i ++){if(i%4 == 0 && i%100!= 0 || i%400 == 0){sum = sum+sum+366; } else {sum = sum+365; }} for(int i = 1; i <月; i ++){if(i == 2){if(eNEM%4 == 0 && eart und um%100!= 0 || earm 400 == 0){sum = sum = sum+29;} else {sum = sum = sum = sum = sum+28; }} else {if(i == 4 || i == 6 || i == 9 || i == 11){sum+= 30; } else {sum+= 31; }}} sum = sum+1; int wekday = sum%7; system.out.println(“日/t一/t二/t三/t三/t四/t五/t六”); for(int i = 1; i <= wekday; i ++){system.out.print(“/t”); } int f = 0; if(月== 4 ||月== 6 ||月== 9 ||月== 11){f = 30;} if(月== 1 || 1 ||月== 3 ||月== 5 || 5 ||月== 7 || sontr == 8 ||月== 10 || month == 10 || month == == == 12) if(ear%4 == 0 && eart%100!= 0 || earm%400 == 0){f = 29;} else {f = 28;}} for(int i = 1; i = 1; i <= f; i ++){if(sum%7 == 6) } else {system.out.print(i+“/t”); } sum ++; }}}}
二。
公共類mycalendar {//以下程序段是用來計算輸入日期為該年的第幾天的public static int cptday(int Year,int,int,int Day){byte dayadd [] = {1,-2,1,1,1,1,0,0,1,1,1,1,0,0,1,0,1}; //用來存儲每個月天數和30的差值int daycount = 0; //這是天數daycount計數器,初始化為0,for(int i = 0; i <month-1; i ++)daycount+=(30+dayadd [i]); DayCount+=天;返回(月> 2)? Daycount+Isleap(年):DayCount; } //閏年判定程序段,閏年返回,1,平年返回0公共靜態int isleap(int年){if((((年%400 == 0))||(((eNem%4 == 0)&&(年%100!= 0))返回1;返回0; } //計算輸入日期是星期幾//採用了基姆拉爾森計算公式// w =(d+2*m+3*(m+1)/5+y+y+y+y/4-y/100+y/400)mod 7 //在公式中d d表示日期中的日數day){if(月<3){月+= 12; Year-—;}返回(DAY+2*一個月+3*(月+1)/5+Year+Year+Year/4年/100+Year/400)%7; } //以下程序段是來計算輸入日期為該年第幾週的公共靜態int weekcount(int年,int月,int day){int daycnt = cptday(年,月,日); int weekminus = getweek(年,月,日) - getweek(年,1,1); int weekCnt = 0; if(daycnt%7 == 0)weekCnt = daycnt/7+((WeekMinus> 0)?1:0); else WeekCnt = Daycnt/7+((WeekMinus> 0)?2:1);返回WeekCNT; } //打印萬年曆public static void printcal(int年){byte dayadd [] = {0,1,-2,1,0,1,1,1,1,1,1,1,0,1,0,1}; //同樣的,每月天數和,30的差值,注意,dadadd [0]的0並沒用到int wkpoint = getweek(年,1,1); // wkpoint用來指出當前日期的星期數int t = 0; // t用來作為一個標記器,解決閏年2月有29天的問題int bk = 0; //bk用來記錄需輸空白的數目字符串週[] = {“星期一”,“星期二”,“星期三”,“星期四”,“”,“”,“星期六”,“星期日”}; for(int i = 1; i <13; i ++){t = 0; bk = 0; if(((i == 2)&&(isleap(ey year)== 1))t = 1; //當且僅當閏年的2月份才將其置為1system.out.println(“/n/n/n/n/t/t”+Year+“+”+I+“+”月/n”); for(int j = 0; j <7; j ++)system.out.print(week [j]+“/t”); system.out.println(); while(bk ++ <wkpoint)system.out.print('/t'); for(int j = 1; j <=(30+dayAdd [i]+t); j ++){system.out.print(j+“/t”); //循環輸出每月日期如果(wkpoint == 6){wkpoint = 0; system.out.print('/n');} // wkpoint計數器為6時將其置為0,並換行else wkpoint ++; }}}} public static void main(string [] args){string week [] = {“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“”,“星期六”,“星期日”}; system.out.println(“輸入的日期是該年的第”+cptday(2009,2,15)+“天”); System.out.println(“這一天是該年的第”+WeekCount(2009,2,15)+“週”+Week [GetWeek(2009,2,15)]); Printcal(2009); }}}三、
1.用戶輸入信息->進行信息判斷(是否符合要求)
2.以1900年1月1日(星期一)為基準,1900年1月1日
(1)先計算1900年(用戶輸入的年 -1)的總天數->注意平閏年之分
(2)計算用戶輸入年份的1月至(用戶輸入月份 -1)的天數
3.計算輸入月份的第一天是星期幾
4.格式化輸出
以下我們按照步驟一步一步進行代碼解析
(一)、利用 do-do-do-do,並利用-if-else語句進行判斷
int年;國際月;布爾xn = false; do {system.out.println(“請輸入年份:”);年= input.nextint(); system.out.println(“請輸入月份:”);月= input.nextint(); //利用布爾值類型的表達式進行輸入信息的判斷xn =(月<1)|| (月> 12)||(年<1); if(xn){system.out.println(“輸入信息錯誤,請重新輸入!”); }} while(xn); (二)、判斷平閏年,併計算,1900年-1)
int每年= 0; //每年的天數int totalyearsdays = 0; //計算年的天數int inputyearday = 0 //記錄用戶輸入年的天數boolean yn = false; //標識平閏年//利用for(int i = 1900; i <=年; i ++){if((((((((i%4 == 0))每年= 366; } else {yn = false;每年= 365; } //如果循環中的年份小於用戶輸入的年份,則累積天數if(i <Year){總preyearsdays = Total yyearsdays +每年; } else {inputyearday =每年; system.out.println(年 +“年共”:” + inputyearday +“天”); }}} (三)、判斷月份的天數,併計算當年1月至(用戶輸入月份-1)的天數
int averymonthday = 0; //記錄每月的天數int totalMonthSdays = 0; //總天數int inputmonthday = 0; //記錄用戶輸入的月份在用戶輸入年份的天數// for(int i = 1; i <=月; i ++){switch(i){案例4:案例6:案例9:案例11:case 11:averymonthday = 30;休息;案例2:如果(xn)//xn是用來記錄平閏年的布爾值類型的變量{每月= 29; } else {avermonthday = 28; } 休息;默認值:每個人= 31;休息; } if(i <month){totalMonthSdays = totalMonthsdays +每月; } else {inputmonthday =每月; system.out.println(月 +“月共有:” + inputmonthday +“天”); }}} (()、計算總天數,併計算出用戶輸入的月份的第一天星期幾,併計算出用戶輸入的月份的第一天星期幾
int total = total monthsdays + Total Pryearsdays; //計算總天數
int temp =(總計 + 1)%7; //判斷輸入月份的第一天星期幾
(五)、格式化輸出
//因為我們的輸入格式是//星期日//星期日//當星期日時的時候//當星期日時的時候,我們直接輸出就好了,我們直接輸出就好了,但是當//第一天是星期一的時候,我們就必須首先打印出空格//我們就必須首先打印出空格//然後再輸出日期,才能讓號碼和星期想對應//打印空格//打印空格} //按照順序打印號碼for(int i = 1; i <= inputMonthday; i ++){if(((總 +i)%7)//判斷是否該換行了{system.out.ut.println(i); } else {system.out.print(i +“/t”); }}}四、 java(用日曆類)寫一個萬年曆,輸入年並且顯示當年的日曆
公共類mycalendar {public static void main(string args []){scanner sc = new Scanner(system.in);日曆C = calendar.getInstance(); system.out.println(“ 2014年)”); int年= sc.nextint(); sc.close(); // int Year = 2014; C.Set(日曆。年,年); for(int i = 0; i <12; i ++){c.set(calendar.month,i); // c.set(calendar.date,1); //設置成1月printmonth(c); }} public static void printMonth(calendar c){c.set(calendar.day_of_month,1); //設置成一日system.out.printf(“/n/n/n ================================================= string [] weeks = {“日”,“一”,“二”,“三”,“四”,“五”,“六”}; for(int i = 0; i <weeks.length; i ++){system.out.printf(“%s”+(i!= 6?= 6?“/t”/t“:“/n”),Weeks [i]); } int oftDay = c.get(calendar.day_of_week)-1; for(int i = 0; i <offday; i ++){system.out.printf(“/t”); } int月份= c.get(calendar.month); while(c.get(calendar.month)==月){system.out.printf(“%d” +((c.get(c.get(calendar.day_of_week)))!= 7?= 7?“/t”:“/n”:“/n”),c.get(calendar.day_of_of_month)); c.Add(calendar.day_of_month,1); }}}}五、程序:萬年曆+時鍾小程序實現
java:java 常用內庫與工具(日曆類、日曆類等)、異常(
導入javax.swing。 //創建窗口和年曆類Mainframe擴展了Jframe {Jpanel面板= new Jpanel(new BorderLayout()); // BorderLayout為邊界佈局jpanel panel1 = new Jpanel(); jpanel panel2 = new Jpanel(new Jpanel(new Jpanel) [] label = new Jlabel [49]; jlabel y_label = new jlabel(“年份”); jlabel m_label = new Jlabel(“月份”); jcombobox com1 = new Jcombobox() re_ year,re_month; int x_size,y_size; string year_num; calendar now now = calendar.getInstance(); //實例化calendarmainframe(){super(“萬年曆-jackbase”); setSize(300,350); x_size =(int)(toolkit.getDefaultTooltoolKit()。getsCreensize() GHT()); setLocation(((x_size-300)/2,(y_size-350)/2); setDefaultClosePoperation(jframe.exit_on_close); p anel1.add(y_label); panel1.add(com1); panel1.add(m_label); panel1.add(com2); panel1.add(button); for(int i = 0; i <49; i ++){label = new jlabel(“”,jlabel.center); //將顯示的字符設置為居中panel2.Add(label);} panel3.Add(new時鐘(this)); panel.Add(panel1,borderlayout.north); panel.Add(panel2,borderlayout.center); panel.add(panel3,borderlayout.south); panel.setbackground(co lor.white); panel1.setBackground(color.White); panel2.setBackground(color.white); panel3.setBackground(color.white); init(inition(); button.AddactionListener(new ActionListener(){public void actionPerformed(actionEvent e){int c_year,c_month,c_week; c_year = integer.parseint(com1.getSelectedItem()。 toString()。 //得到當前月份,並減1,計算機中的月為0-11c_week = use(c_year,c_month); //調用函數使用,得到星期幾resetday(c_week,c_year,c_month); //調用函數resetday}}); setContentpane(panel); setVisible(true); setResizable(false);} public void init(){int Year near_num,first_day_num; string log; string log [] i = 0; i <7; i ++){label.setText(log);} for(int i = 0; i = 0; i <49; i = i+7){label.set.set.setforeground(color.red); //將星期日的日期設置為紅色} for(int i = 6; i <49; i = i+7){label.set.setforeground(color.red); //將星期六的日期也設置為紅色} for(int i = 1; i = 1; i <10000; i ++){com1.additem(“”+i);} for(int i = 1; i <13; i ++){com2.additem(“”+i);} month_num =(int)(now.get(calendar.onth)); //得到當前時間的月份年=(int)(now.get(calendar.year)); //得到當前時間的年份com1.setselectedIndex(1年); //設置下拉列表顯示為當前年com2.setselectedIndex(noter_num); //設置下拉列表顯示為當前月first_day_num = use(年,月_num); resetday(first_day_num,Year,month_num);} public int int使用(int Reyear,int int remonth){int week_num; now.set.set.set.set(re reyear,retyear,reyear,retyth,remmonth,1); //設置時間為所要查詢的年月的第一天week_num =(int)(現在。 //判斷是否是閏年的標記int montr_day_score; //存儲月份的天數int count; month_score_log = 0; month_day_score = 0; count = 1; if(year_log%4 == 0 && eary_log%100!= 0 || eary_log%400 == 0) //將傳來的月份數加1Switch(month_log){情況1:案例3:情況5:案例5:案例7:案例8:案例8:案例10:案例12:note_day_score = 31; break; case 6:案例6:案例9:案例9:案例11:case 11:node_day_score = 30; case 2; case 2; case 2; case 2; case 2:if(month_score_log == 1) } else {month_day_score = 28;} break;} for(int i = 7; i <49; i ++){//初始化標籤label.setText(“”);} week_log = week_log+6; //將星期數加6,使顯示正確月_day_score = month_day_score+week_log; for(int i = week_log; i <month_day_score; i ++,count ++),count ++){label.settext(count+“”}}}}}}}}}}}}}} /////// mf){this.mf = mf; setSize(400,40); setbackground(color.white); t = new thread(this); //實例化線程t.start(); //調用線程} public void run(){while(true){try {t.sleep(1000); //休眠1秒鐘} catch(InterruptedException E){System.out.println(“異常”);} this.repaint(100);}} public void Paint(graphics g){font f = new f = new font(“ new font) SimpleDateFormat SDF = new SimpleDateFormat(“ Yyyy''MM'mm'dd'dd'dd'hh:mm:ss”); // genualar now = calendar.getAr.getAr.getAr.getInstance(); time = sdf.format(sdf.format(now.getTime)(now.getTime()()()); //得到當前日期和時間g.setfont(f); g.setColor(color.red); g.drawString(time,100,25);}} public class wnl {public static void main(string [] args [] args [args){jframe.setdefault.setDefeault and default and fefeart anddefeant and fefeart and fequaultlooked(true)以上就是java實現萬年曆的資料,希望能幫助實現該功能的朋友,謝謝大家對本站的支持! ,謝謝大家對本站的支持!