짐
패키지 캘린더; import java.util.scanner; // 日历项目 public class rili {public static void main (String [] args) {스캐너 a = 새 스캐너 (System.in); System.out.println ( "请输入年份 :"); int 년 = A.NextInt (); System.out.println ( "请输入月份 :"); int month = a.nextint (); int sum = 0; for (int i = 1900; i <년; 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 && 년%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 || Month == 9 || Month == 11) {f = 30;} if (Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month = 10 || Month == 12) {f = 31;} if (Month == 2) { if (year%4 == 0 && 년%100! = 0 || 연말 400 == 0) {f = 29;} else {f = 28;}} (int i = 1; i <= f; i ++) {if (sum%7 == 6) {system.out.print (i+"/n"); } else {system.out.print (i+"/t"); } sum ++; }}}
二.
공개 클래스 mycalendar {// 以下程序段是用来计算输入日期为该年的第几天的 public static int cptday (int 연도, int month, int day) {byte dayadd [] = {1, -2,1,0,1,1,1,0,0,1}; // 用来存储每个月天数和 30 用来存储每个月天数和 int daycount = 0; // 这是天数 DayCount 计数器 计数器, 初始化为 0 for (int i = 0; i <month-1; i ++) daycount+= (30+dayAdd [i]); DayCount+= 일; Return (Month> 2)? DayCount+Isleap (연도) : DayCount; } // 闰年判定程序段 1, 闰年返回 1, 平年返回 0 public static int isleap (int 년) {if ((년%400 == 0) || ((년%4 == 0) && (년%100! = 0)) 리턴 1; 반환 0; } // 计算输入日期是星期几 // 采用了基姆拉尔森计算公式 // w = (d+2*m+3*(m+1)/5+y/4-y/100+y/400) mod 7 // 在公式中 d 表示日期中的日数 表示日期中的日数, m 表示月份数, m 表示月份数 表示月份数, y 表示年数。 // 注意 : : // : // 如果是 : 如果是 2004-1-10 则换算成 : int getweek (int getweek) day) {if (Month <3) {Month+= 12; 연도-} 반품 (일+2*달+3*(월+1)/5+년+년/4 년/100+년/400)%7; } // public static int weekcount (int 연도, int month, int day) {int daycnt = cptday (연도, 월, 일); int weekminus = getweek (연도, 월, 일)-getweek (연도, 1,1); int weekcnt = 0; if (daycnt%7 == 0) Weekcnt = daycnt/7+((주간> 0)? 1 : 0); else weekcnt = daycnt/7+((Weekminus> 0)? 2 : 1); return weekcnt; } // public static void printcal (int 년) {byte dayAdd [] = {0,1, -2,1,0,1,0,1,1,0,0,1}; // 同样的 同样的, 同样的 30 的差值 的差值, 注意, dadadd [0] 的 0 并没用到 int wkpoint = getweek (연도, 1,1); // wkpoint point 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/t/t"+year+"年"+i+"月/n"); for (int j = 0; j <7; j ++) system.out.print (주 [j]+"/t"); System.out.println (); while (bk ++ <wkpoint) system.out.print ( '/t'); for (int j = 1; // 循环输出每月日期 if (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 00 1 月 1 日 (星期一 星期一) 为基准 为基准, 计算 1900 年 1 月 1日至当日的总天数
(1) 00 1900 年至 (用户输入的年 -1) 的总天数 -> 注意平闰年之分
(2) 月至 1 计算用户输入年份的 (用户输入月份 -1) 的天数
3. 计算输入月份的第一天是星期几
4. 格式化输出
以下我们按照步骤一步一步进行代码解析
一) 、利用 do-while 循环接受用户输入信息 循环接受用户输入信息, 并利用 if-else 语句进行判断
int 년; int 달; 부울 XN = 거짓; do {system.out.println ( "请输入年份 :"); 연도 = input.nextInt (); System.out.println ( "请输入月份 :"); Month = input.nextInt (); // boolean 类型的表达式进行输入信息的判断 xn = (Month <1) || (Month> 12) || (년 <1); if (xn) {system.out.println ( "输入信息错误 输入信息错误, 请重新输入!"); }} while (xn);二) 、判断平闰年 、判断平闰年 、判断平闰年, 并计算 1900 年至 − (用户输入年 -1) 的总天数
int everyyearday = 0; // int int totalyearsdays = 0; // int inputyearday = 0 // boolean yn = false; // (int i = 1900; i <= 년; i ++) {if (((i % 4 == 0) && (i % 100! = 0)) || (i % 400 == 0)) // {yn = true; Everyyearday = 366; } else {yn = false; Everyyearday = 365; } // 如果循环中的年份小于用户输入的年份, 则累积天数 if (i <년) {TotalyearSdays = TotalYearSdays + EveryYearday; } else {inputyearday = Everyyearday; System.out.println (Year + "年 共 有 有 :" + inputyearday + "天"); }}三) 、判断月份的天数 、判断月份的天数, 并计算当年 1 月至 (用户输入月份 -1) 的天数
int everymonthday = 0; // int totalmonthsdays = 0; // int inputmonthday = 0; // (int i = 1; i <= month; i ++) {switch (i) {사례 4 : 사례 9 : 사례 11 : Everymonthday = 30; 부서지다; 사례 2 : if (xn) // xn 是用来记录平闰年的 부울 类型的变量 {Everymonthday = 29; } else {EveryMonthday = 28; } 부서지다; 기본값 : EveryMonthday = 31; 부서지다; } if (i <month) {TotalmonthSdays = Total MonthSdays + EveryMonthday; } else {inputmonthday = EveryMonthday; System.out.println (Month + "月 共 有 有 :" + inputmonthday + "天"); }}四) 、计算总天数 、计算总天数, 并计算出用户输入的月份的第一天星期几
int total = Total Monthsdays + Totalyearsdays; // 计算总天数
int temp = (총 + 1) % 7; // 判断输入月份的第一天星期几
五) 、格式化输出
// 因为我们的输入格式是 // 因为我们的输入格式是 星期一 星期二 星期二 星期三 星期四 星期五 星期六 星期六 星期六 // 当星期日时的时候 当星期日时的时候, 我们直接输出就好了 我们直接输出就好了, 但是当 // 第一天是星期一的时候 第一天是星期一的时候, 我们就必须首先打印出空格 // 然后再输出日期 然后再输出日期 然后再输出日期 打印空格 打印空格 打印空格 打印空格 // 打印空格 for (int spaceno = 0; spaceno <temp; spaceno ++) {system.out.out.print ( "/t"); } // 按照顺序打印号码 for (int i = 1; i <= inputmonthday; i ++) {if ((총 +i) % 7) // {system.out.println (i); } else {system.out.print (i + "/t"); }}四、 Java (av 캘린더 类) 写一个万年历, 输入年并且显示当年的日历
public class mycalendar {public static void main (String args []) {스캐너 sc = 새 스캐너 (System.In); Calendar C = Calendar.getInstance (); System.out.println ( "请输入数字年 : (2014 년)"); int 년 = sc.nextint (); sc.close (); // int 년 = 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 (캘린더 c) {c.set (calendar.day_of_month, 1); // 设置成一日 system.out.printf ( "/n/n ======== %s 月 ========/n", c.get (calendar.month) +1); 문자열 [] 주 = { "日", "一", "二", "三", "四", "五", "六"}; 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" + ((calendar.day_of_week))! = 7? "/t": "/n"), c. get (calendar.day_of_month)); c.add (calendar.day_of_month, 1); }}}五、程序 : 万年历+时钟小程序实现
Java : : Java 常用内库与工具 (날짜 类、 캘린더 类等 类等 类等 类等 ← 、异常 、异常 、异常 、异常 、异常 、异常 、异常 、异常 、线程、 、线程、 、线程、 、线程、 awt 图形用户界面等基础知识点。 图形用户界面等基础知识点。
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.text.*; import java.util.*; // 클래스 메인 프레임은 jframe {jpanel panel = new jpanel (new BorderLayout ()); // borderlayout 为边界布局 jpanel panel1 = new jpanel (); jpanel panel2 = new jpanel (new Gridlayout (7,7)); // jlabel (jpanel 3 =); jlabel [49]; Jlabel y_label = new Jlabel ( "年份"); jlabel m_label = new Jlabel ( "月份"); jcombobox com1 = new Jcombobox (); jcombobox com2 = new jcombobox (); x_size, y_size; String year_num; calendar now = calendar.getInstance (); // calendarmainframe () {super ( "万年历 jackbase"); setsize (300,350); x_size = (int) (툴킷 .getDefaultToolKit () 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); panpel1 (panpel1); i = 0; i <49; i ++) {label = new jlabel ( "", jlabel.center); // 将显示的字符设置为居中 pante.add (label);} pante3.add (new clock (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.setbackgroun ActionListener () {public void actionPerformed (ActionEvent e) {int c_year, c_month, c_week; c_year = integer (com1.getSelectedItem (). toString ()); // 得到当前月份 得到当前月份, 得到当前月份 1, 计算机中的月为 0-111c_week = use (c_year, c_month); // 调用函数 사용, 得到星期几 resetday (c_week, c_year, c_month); // 调用函数 resetday}}); setContentPane (패널); setVisible (true); setResizable (false);} public void init () {int year, month_num, first_day_num; String log [] = { "日", "一", "二", "三", "四", "六"}; 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.setforegroun i = 1; i <13; i ++) {com2.additem ( ""+i);} month_num = (int) (now.get (calendar.month)); // 得到当前时间的月份 년 = (int) (now.get (calendar.year)); // 得到当前时间的年份 com1.setselectedIndex (1 년); // com2.setselectedIndex (month_num); // first_day_num = 사용 (연도, Month_num); Resetday (First_day_num, Year, Month_num);} public int use (int reyear, int remonth) {int week_num; now.set (Reyear, Remonth, 1); // 设置时间为所要查询的年月的第一天 week_num = (int) (now.get (calendar.day_of_week)); // 得到第一天的星期 Return Week_num;} public void resetday (int week_log, int year_log, int month_log) {int month_score_log; // int month_day_score; // 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) {// // 1 스위치 (Month_Log) {사례 1 : 사례 3 : 사례 5 : 사례 8 : 사례 10 : 사례 10 : 사례 12 : Month_day_Score = 31; Break; 사례 4 : 사례 9 : 사례 11 : Month_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; // 将星期数加 6, 使显示正确 month_day_score = month_day_score+week_log; for (int i = week_log; i <month_day_score; i ++, count ++, count ++) {label.settext (count+"";}}}}}} // class class inclames {mainframe mf; string t; string t; mf) {this.mf = mf; setsize (400,40); stetbackground (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 (그래픽 g) {font f = new Font ( "宋体", font.bold, 16); simpledateformat sdf = new simpledateformat ( "yyyy '年 年'mm '月'dd '日'hh : mm : mm : ss"); // calendar now = calendar.getinstance (); time = sdf.format (now.gettime ()); // 得到当前日期和时间 g.setfont (f); g.setcolor (color.red); G.DrawString (시간, 100,25);}} public class wnl {public static void main (String [] args) {jframe.setDefaultLookandFeEleDecorated (true); mainframe start = new mainframe ();}}以上就是 Java a a, 希望能帮助实现该功能的朋友, 谢谢大家对本站的支持!