java 中日历怎么写?

人来人往123 2014-04-15 01:25:26
java如何让编写日历,我只会一点!可是运行不起来
...全文
174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-江沐风- 2014-04-15
  • 打赏
  • 举报
回复
用Java的Calendar类来实现吧;
1山高水长 2014-04-15
  • 打赏
  • 举报
回复
import java.util.Scanner; public class Menology { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int flag=1;//循环标志 int flag1=1;//用户输入年份错误标志,默认为1正确 int flag2=1;//用户输入月份错误标志,默认为1正确 int year=0; int month=0; while(flag==1) { System.out.println("---------------JAVA版简单日历的实现---------------");//原样输出 System.out.println("请输入要查询日期的年份:");//原样输出 while(flag1==1) { year=scanner.nextInt(); if(year<1900||year>9999)//年份范围 { System.out.println("您输入的年份出错,请重新输入!"); } else flag1=0; } System.out.println("请输入要查询日期的月份:");//原样输出 while(flag2==1) { month=scanner.nextInt(); if(month<1||month>12)//月份范围 { System.out.println("您输入的月份出错,请重新输入!"); } else flag2=0; } int sumDay=0;//相隔的天数 int monMaxDay=0;//当月最大的天数 int weekDay=0;//星期几 for(int i=1900;i<year;i++)//从1990年1月1日为周一开始计算 { if(i%4==0&&i%100!=0||i%400==0)//决断润年 { sumDay+=366;//润年366天 } else sumDay+=365;//平年365天 } for(int i=1;i<month;i++) { if(i==2) { if(year%4==0&&year%100!=0||year%400==0) sumDay+=29;//润年2月29天 else sumDay+=28;//平年2月28天 } else if(i==4||i==6||i==9||i==11) { sumDay+=30;//4、6、9、11月30天 } else sumDay+=31;//1、3、5、7、8、10、12月31天 } sumDay=sumDay+1; if(month==2) { if(year%4==0&&year%100!=0||year%400==0) monMaxDay=29;//润年2月最多有29天 else monMaxDay=28;//平年2月最多有28天 } else if(month==4||month==6||month==9||month==11) { monMaxDay=30;//4、6、9、11月最多有30天 } else monMaxDay=31;//1、3、5、7、8、10、12月最多有31天 weekDay=sumDay%7;//总天数模7得到周几 System.out.println(); System.out.println("--------------------"+year+"年"+month+"月"+"--------------------");//原样输车 System.out.println(); System.out.print("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");//用\t进行输出排版控制 for(int i=1;i<=weekDay;i++) { System.out.print("\t");//控制\t的个数 } for(int i=1;i<=monMaxDay;i++) { if(sumDay%7==6) { if(month==1&&i==1) System.out.print("元旦节"+"\n"); else if(month==2&&i==14) System.out.print("情人节"+"\n"); else if(month==3&&i==8) System.out.print("妇女节"+"\n"); else if(month==4&&i==1) System.out.print("愚人节"+"\n"); else if(month==5&&i==1) System.out.print("劳动节"+"\n"); else if(month==5&&i==4) System.out.print("青年节"+"\n"); else if(month==6&&i==1) System.out.print("儿童节"+"\n"); else if(month==7&&i==1) System.out.print("建党节"+"\n"); else if(month==8&&i==1) System.out.print("建军节"+"\n"); else if(month==9&&i==10) System.out.print("教师节"+"\n"); else if(month==10&&i==1) System.out.print("国庆节"+"\n"); else if(month==10&&i==31) System.out.print("万圣节"+"\n"); else if(month==11&&i==8) System.out.print("记者节"+"\n"); else if(month==12&&i==24) System.out.print("平安夜"+"\n"); else if(month==12&&i==25) System.out.print("圣诞节"+"\n"); else if(month==12&&i==31) System.out.print("阳历年"+"\n"); else System.out.print(i+"\n");//当是周六的时候输出日期和换行 } else { if(month==1&&i==1) System.out.print("元旦节"+"\t"); else if(month==2&&i==14) System.out.print("情人节"+"\t"); else if(month==3&&i==8) System.out.print("妇女节"+"\t"); else if(month==4&&i==1) System.out.print("愚人节"+"\t"); else if(month==5&&i==1) System.out.print("劳动节"+"\t"); else if(month==5&&i==4) System.out.print("青年节"+"\t"); else if(month==6&&i==1) System.out.print("儿童节"+"\t"); else if(month==7&&i==1) System.out.print("建党节"+"\t"); else if(month==8&&i==1) System.out.print("建军节"+"\t"); else if(month==9&&i==10) System.out.print("教师节"+"\t"); else if(month==10&&i==1) System.out.print("国庆节"+"\t"); else if(month==10&&i==31) System.out.print("万圣节"+"\t"); else if(month==11&&i==8) System.out.print("记者节"+"\t"); else if(month==12&&i==24) System.out.print("平安夜"+"\t"); else if(month==12&&i==25) System.out.print("圣诞节"+"\t"); else if(month==12&&i==31) System.out.print("阳历年"+"\t"); else System.out.print(i+"\t");//当不是周六的时候输出日期和\t } sumDay++;//天数自增 } System.out.println(); System.out.println(); System.out.println("--------------------JAVA版日历--------------------");//原样输出 System.out.println(); flag=0;//循环标志置0 System.out.println(); System.out.println("是否还要继续查询日历当输入yes:继续 其它输入为结束查询!)");//原样输出提示 String con=scanner.next(); if(con.equals("yes")) { flag=1;//当用户输入yes的时候循环标志为1 flag1=1;//当用户输入yes的时候判断年份标志为1 flag2=1;//当用户输入yes的时候判断月份标志为1 } } } } 这是我在传智播客上看到的,你试试吧!
sducaicai 2014-04-15
  • 打赏
  • 举报
回复
import java.text.DateFormatSymbols; import java.util.*; public class CalendarTest { public static void main(String[] args) { GregorianCalendar d = new GregorianCalendar(); //获取今天是这个月的第几天 int today = d.get(Calendar.DAY_OF_MONTH); int month = d.get(Calendar.MONTH); //月份 d.set(Calendar.DAY_OF_MONTH, 1); //设置d的日期是本月的1号 int weekDay = d.get(Calendar.DAY_OF_WEEK); //获取当天位于本星期的第几天,也就确定了星期几,值的范围是1-7 int firstDayOfWeek = d.getFirstDayOfWeek(); //获取一星期的第一天,我们得到的是Calendar.SUNDAY,因为我们一星期的第一天是周日 int indent = 0; //为了定位本月第一天,定义索引 while (weekDay != firstDayOfWeek) { indent++;//缩进个数+1 d.add(Calendar.DAY_OF_MONTH, -1);//当前天数-1,如果现在是1号,则执行本条代码后,时间变为上一个月最后一天 weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获取当天位于本星期的第几天 } String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//获取简短形式的星期字符串数组 for (int i=1; i<weekDayNames.length; i++)//打印星期标题 System.out.printf("%3s\t", weekDayNames[i]); System.out.println();//换行 for (int i=1; i<=indent; i++)//确定一星期的一天位置,利用上面indent System.out.printf("\t"); //实现输出日期 d.set(Calendar.MONTH, month); d.set(Calendar.DAY_OF_MONTH, 1); do { //print day int day = d.get(Calendar.DAY_OF_MONTH); System.out.printf("%3d", day); if (day == today) System.out.print("*"); System.out.print("\t"); d.add(Calendar.DATE, 1);//天数加1 weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay if (weekDay == firstDayOfWeek) //如果这天等于星期天则换行 System.out.println(); } while (d.get(Calendar.MONTH) == month); } }

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧