一,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实现万年历的资料,希望能帮助实现该功能的朋友,谢谢大家对本站的支持!,谢谢大家对本站的支持!