黑马程序员技术交流社区

标题: 自己写的程序-----不通过API查询某一天星期几(100%准确) [打印本页]

作者: knockout    时间: 2015-9-3 02:01
标题: 自己写的程序-----不通过API查询某一天星期几(100%准确)
  1. /*
  2.   已知1990年1月1日星期一。求任意一个日期是周几。
  3.   用键盘输入获得年月日,获得总的天数,通过对7取余,然后加上星期一  获得相应的星期。
  4.   求出总的
  5. */
  6. import java.util.Scanner;
  7. class GetWeekDay
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 getDate();
  12.         }
  13.         public static void getDate()
  14.         {       
  15.                 Scanner sc=new Scanner(System.in);
  16.                 int year,month,day;
  17.                 while(true)
  18.                 {
  19.                         System.out.println("请输入年:");
  20.                         year=sc.nextInt();
  21.                         if(year<1900)
  22.                         {
  23.                                 System.out.println(" 请重新输入一个1900年之后的年份。");
  24.                         }
  25.                         else
  26.                         {
  27.                                 break;
  28.                         }
  29.                 }
  30.                 while(true)
  31.                 {
  32.                         System.out.println("请输入月:");
  33.                         month=sc.nextInt();
  34.                         if(month<=0||month>12)
  35.                         {
  36.                                 System.out.println("月份错误,重新输入。");
  37.                         }
  38.                         else
  39.                         {
  40.                                 break;
  41.                         }
  42.                 }
  43.                 while(true)
  44.                 {
  45.                         System.out.println("请输入日:");
  46.                         day=sc.nextInt();
  47.                         if(day<=0||day>getDays(year,month))
  48.                         {
  49.                                 System.out.println("日期不存在,重新输入。");
  50.                         }
  51.                         else
  52.                         {
  53.                                 break;
  54.                         }
  55.                 }
  56.                 getWeekDay(year,month,day);
  57.         }
  58.         public static void getWeekDay(int year,int month,int day)
  59.         {
  60.                 int sumDays=0;       
  61.                 for (int i=1900;i<year ;i++ )
  62.                 {
  63.                         for(int j=1;j<=12;j++)
  64.                         {
  65.                                 sumDays+=getDays(i,j);      
  66.                         }
  67.                 }
  68.                 for(int k=1;k<month;k++)
  69.                 {
  70.                         sumDays+=getDays(year,k);   
  71.                 }
  72.                 sumDays=sumDays+day-1;          //获得天数差   
  73.                 String tian;
  74.                 switch((sumDays%7+1))        //将数字转换成星期几
  75.                 {
  76.                         case 1:
  77.                                 {
  78.                                         tian="星期一";
  79.                                         break;
  80.                                 }
  81.                         case 2:
  82.                                 {
  83.                                         tian="星期二";
  84.                                         break;
  85.                                 }       
  86.                         case 3:
  87.                                 {
  88.                                         tian="星期三";
  89.                                         break;
  90.                                 }
  91.                         case 4:
  92.                                 {
  93.                                         tian="星期四";
  94.                                         break;
  95.                                 }
  96.                         case 5:
  97.                                 {
  98.                                         tian="星期五";
  99.                                         break;
  100.                                 }
  101.                         case 6:
  102.                                 {
  103.                                         tian="星期六";
  104.                                         break;
  105.                                 }
  106.                         default:
  107.                                 {
  108.                                         tian="星期天";
  109.                                         break;
  110.                                 }
  111.                 }
  112.                 System.out.println(year+"年"+month+"月"+day+"日是"+tian+"。");
  113.         }
  114.         //判断闰年
  115.         public static boolean judgeYear(int year)
  116.         {
  117.                 if(year%4==0&&year%100!=0||year%400==0)
  118.                 {
  119.                         return true;
  120.                 }
  121.                 return false;
  122.         }
  123.         //判断每个月的天数。       
  124.         public static int getDays(int year,int month)
  125.         {
  126.                 int days;
  127.                 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
  128.                 {
  129.                         days=31;
  130.                 }
  131.                 else if (month==2)
  132.                 {
  133.                         if(judgeYear(year)==true)   //调用 判断是否闰年函数,来获得2月的天数。
  134.                         {
  135.                                 days=29;
  136.                         }
  137.                         else
  138.                         {
  139.                                 days=28;
  140.                         }
  141.                 }
  142.                 else
  143.                 {
  144.                         days=30;
  145.                 }
  146.                 return days;
  147.         }
  148. }       
复制代码
    完全自己写的小程序,不通过系统提供的API实现查询某一天是星期几。大家可以模仿练练代码。

作者: 至尊幽蓝    时间: 2015-9-3 07:27
很犀利啊!!
作者: freehello    时间: 2015-9-3 07:30
图像挺好
作者: boboyuwu    时间: 2015-9-3 08:33
赞赞赞赞赞
作者: knockout    时间: 2015-9-4 00:05
必须赞啊    很多人多不知道api怎么实现的
作者: chensheng06    时间: 2015-9-4 07:23
不错不错。。
作者: 三分之一    时间: 2015-9-4 07:31
好强大……
作者: knockout    时间: 2015-9-4 15:02
很好,很强大

作者: 淡忘初学者    时间: 2015-9-4 15:56
写得不错,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2