一、java实现万年历的代码:
パッケージカレンダー。 Import Java.util.scanner; // System.out.println( "请输入年份:"); int year = a.nextint(); System.out.println( "请输入月份:"); int month = a.nextint(); int sum = 0; for(int i = 1900; i <year; i ++){if(i%4 == 0 && i%100!= 0 || i%400 == 0){sum = sum+366; } else {sum = sum+365; }} for(int i = 1; i <month; i ++){if(i == 2){if(year%4 == 0 && year%100!= 0 || year%400 == 0){sum = sum+29;} else {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六"); for(int i = 1; i <= wekday; i ++){system.out.print( "/t"); } int f = 0; if(month == 4 || month == 6 ||月== 9 ||月== 11){f = 30;} if(month == 1 ||月== 3 ||月== 5 ||月== 7月== 8 ||月== 10 ||月== 12){f = 31;} if(月== 2){ if(year%4 == 0 && year%100!= 0 || year%400 == 0){f = 29;} else {f = 28;}} for } else {system.out.print(i+"/t"); } sum ++; }}}
二。Java万年历、比较简单的那种、比较简单的那种、显示年月日、星期几、当前日期是第几周、显示闰年、打印万年历等、还可显示当前日期是一年中的第几天、还可显示当前日期是一年中的第几天、指定日期是星期几等、采用了基姆拉尔森计算公式、采用了基姆拉尔森计算公式、w =(d+2*m+3*(m+1)/5+y+y+y+y+y+y+y+y+y+y+y+y+d表示日期中的日数、m表示月份数、y、y表示年数。注意:
public class mycalendar {//以下程序段是用来计算输入日期为该年的第几天的public static int cptday(int year、int month、int day){byte dayadd [] = {1、-2,1,0,1,1,1,0,1,0,1}; // //这是天数daycount计数器、初始化为0 daycount+= day; return(月> 2)?daycount+isleap(year):daycount; } //闰年判定程序段、闰年返回1、平年返回0 public static int isleap(int year){if((year%400 == 0)||((year%4 == 0)&&(year%100!= 0))return 1; 0を返します。 } //计算输入日期是星期几//采用了基姆拉尔森计算公式// w =(d+2*m+3*(m+1)/5+y+y+y+y+y+y/4-y/100+y/400)mod 7 // day){if(月<3){月+= 12;年 - ;} return(day+2*月+3*(月+1)/5年+年/4年/100+年/400)%7; } // int weekminus = getweek(year、month、day)-getweek(year、1,1); int weekcnt = 0; if(daycnt%7 == 0)weekcnt = daycnt/7+((weekminus> 0)?1:0); else weeknt = daycnt/7+((weekminus> 0)?2:1); weekcntを返します。 } // //同样的、每月天数和30的差值、注意、dadadd [0]的0 // wkpoint用来指出当前日期的星期数int t = 0; // t用来作为一个标记器、解决闰年2月有29天的问题int bk = 0; // bk用来记录需输空白的数目string week [] = {"星期一"、 "星期二"、 "星期三"、 "星期四"、 "星期五"、 "星期六"、 "星期日"}; for(int i = 1; i <13; i ++){t = 0; bk = 0; if((i == 2)&&(isLeap(year)== 1))t = 1; //当且仅当闰年的2°1 System.out.println( "/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"); //循环输出每月日期if(wkpoint == 6){wkpoint = 0; System.out.print( '/n');} // }}} 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
(1)先计算1900年至(用户输入的年-1)的总天数 - >注意平闰年之分
(2)计算用户输入年份的1月至(用户输入月份 -1)的天数
3.计算输入月份的第一天是星期几
4.格式化输出
以下我们按照步骤一步一步进行代码解析
do-do-whiled、并利用if-else语句进行判断
int year; int month; boolean xn = false; {system.out.println( "请输入年份:"); year = input.nextint(); system.out.println( "请输入月份:");月= input.nextint(); // (月> 12)||(年<1); if(xn){system.out.println( "输入信息错误、请重新输入!"); }} while(xn);二)、判断平闰年、并计算1900 年至(用户输入年 -1 )的总天数
int Everyyearday = 0; // // //标识平闰年//利用For everyyearday = 366; } else {yn = false; everyyearday = 365; } //如果循环中的年份小于用户输入的年份、则累积天数if(i <year){totalyearsdays = totalyearsdays + everyearday; } else {inputyearday = everyyearday; System.out.println(year + "年共有:" + inputyearday + "天"); }}三)、判断月份的天数、并计算当年1月至(用户输入月份-1)的天数
int everymonthday = 0; // // //记录用户输入的月份在用户输入年份的天数//利用for(int i = 1; i <= month; i ++){switch(i){ケース4:ケース6:ケース9:ケース11:everymonthday = 30;壊す;ケース2:if(xn)// xn是用来记录平闰年的boolean类型的变量{everymonthday = 29; } else {everymonthday = 28; } 壊す;デフォルト:everymonthday = 31;壊す; } if(i <month){totalmonthsdays = totalmonthsdays + everymonthday; } else {inputmonthday = everymonthday; System.out.println(月 + "月共有:" + inputmonthday + "天"); }}四)、计算总天数、并计算出用户输入的月份的第一天星期几
int total = totalmonthsdays + totalyearsdays; //计算总天数
int temp =(合計 + 1)%7; //判断输入月份的第一天星期几
五)、格式化输出
//因为我们的输入格式是//星期日星期一星期日星期二星期三星期四星期五//当星期日时的时候、我们直接输出就好了、我们直接输出就好了//第一天是星期一的时候//第一天是星期一的时候//才能让号码和星期想对应// } // for(int i = 1; i <= inputmonthday; i ++){if((total +i)%7)//判断是否该换行了{system.out.println(i); } else {system.out.print(i + "/t"); }}四、java(用カレンダー类)写一个万年历、输入年并且显示当年的日历
public class mycalendar {public static void main(string args []){scanner sc = new scanner(system.in);カレンダーc = charend.getInstance(); System.out.println( "请输入数字年:(比如2014)"); int year = sc.nextint(); sc.close(); // int year = 2014; c.set(calendar.year、year); 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 =======%s string [] weeks = {"日"、 "一"、 "二"、 "三"、 "四"、 "五"、 "六"}; for(int i = 0; i <weeks.length; i ++){system.out.printf( "%s"+(i!= 6? "/t": "/n")、weeks [i]); } int offday = c.get(calendar.day_of_week)-1; for(int i = 0; i <offday; i ++){system.out.printf( "/t"); } int month = c.get(calendar.month); while(c.get(calendar.month)== month){system.out.printf( "%d" +((c.get(calender.day_of_week))!= 7? "/t": "/n")、c.get(calendar.day_of_month)); c.add(calendar.day_of_month、1); }}}五、程序:万年历+时钟小程序实现
Java知识点有:Java
javax.swing。*;インポートjava.awt。*;インポートjava.awt.event。*; import java.text。*; import java.util。*; // Class MainFrame拡張jFrame {jPanel Panel = new jpanel(new borderlayout()); //borderlayout为边界布局jpanelパネル= new jpanel(); jpanelパネル= new jpanel(new gridlayout(7,7)); jlabel [49]; jlabel y_label = new jlabel( "年份"); jlabel m_label = new jlabel( "月份"); jcombobox com1 = new jcombobox(); jcombobox com2 = new jcombobox(); jbutton button = new jbutton x_size、y_size; string year_num; calendar now = calendar.getInstance(); // CalendArmainFrame(){super( "万年历-jackbase"); setSize(300,350); x_size =(int)(toolkit.getDefaultToolkit()。getScreensize()。getWidth(); getWidth(); y_size =(int)(toolKit.getDefaultDefaultToolkit() ght()); setlocation((x_size-300)/2、(y_size-350)/2); setDefaultCloseoperation(jframe.exit_on_close); panel1.add(y_label); panel1.add(com1); panel1.add(m_label); panedd(com2); paner1.add(com2); i = 0; i <49; i ++){label = new jlabel( ""、jlabel.center); //将显示的字符设置为居中panel2.add(label);} panel3.ad(new clock(this)); panel.add(panel1、borderlayout.north); panel.add(panel2、borderlayout.center); panel.add(paner3、borderlayout.south); panel.setbackground(co lor.white); panel1.setbackground(color.white); panel2.setbackground(color.white); panel3.setbackground(color.white); init(); button.addactionlistener(new actionlistener(){public void actionperformed(actionevent e){int c_year、c_month、c_year = integer.parseint(com1.getSelectedItem()。toString()); //得到当前月份、并减1、计算机中的月为0-11c_week = use(c_year、c_month); // use、得到星期几resetday(c_week、c_year、c_month); // Resetday}} i = 0; i <7; i ++){label.settext(log);} for(int i = 0; i <49; i = i+7){label.setforeground(color.red); //将星期日的日期设置为红色} for(int i = 6; i <49; i = i+7){label.setforeground(color.red); //将星期六的日期也设置为红色} for(int i = 1; i <10000; i ++){com1.additem( ""+i);} for(int i = 1; i <13; i ++){com2.additem( ""+i);} month_num =(int)(now.get(calendar.month)); //得到当前时间的月份年=(int)(now.get(calendar.year)); //得到当前时间的年份com1.setselectedindex(year-1); //设置下拉列表显示为当前年com2.setselectedindex(month_num); // first_day_num = use(year、month_num); resetday(first_day_num、year、month_num);} public int use(int reyear、int remonth){int week_num; now.set(reyear、remonth、1); // // //存储月份的天数int count; month_score_log = 0; month_day_score = 0; count = 1; if(year_log%4 == 0 && year_log%100!= 0 || year_log%400 == 0){// // 1Switch(Month_log){ケース1:ケース3:ケース5:ケース7:ケース8:ケース10:ケース12:月_Day_score = 31;ブレーク;ケース6:ケース9:ケース11:月_Day_score = 30;ブレーク;ケース2:if(month_score_log == 1){month_day_score = 29; } else {month_day_score = 28;} break;} for(int i = 7; i <49; i ++){//初始化标签label.settext( "");} week_log = week_log+6; // mf){this.mf = mf; setsize(400,40); setbackground(color.white); t = newスレッド(this); //实例化线程t.start(); //调用线程} public void run(){while(true){try {t.sleep(1000); //休眠1 SimpledateFormat SDF = new SimpleDateFormat( "yyyy 'mm'月 '' dd 'hh:mm:ss"); //格式化时间显示类型カレンダーnow = calendar.getInstance(); time = sdf.format(now.gettime()); //得到当前日期和时间g.setfont(f); g.setcolor(color.red); g.drawstring(time、100,25);}} public static void main(string [] args){jframe.setdefaultlookandfeeldecorated(true); mainframe start = new mainframe();以上就是java实现万年历的资料、希望能帮助实现该功能的朋友、谢谢大家对本站的支持!