A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请写清思路并注释

6 个回复

倒序浏览
本帖最后由 kkqisheng 于 2015-3-24 23:38 编辑

基本思路:把当前月的天数,加上之前N个月的天数,就是这一年的第几天。比如3月24日,就是1月+2月的天数,再加上24天。
具体步骤如下:
1,先判断输入的年份是闰年还是平年。
2,如果是闰年,则2月是29天,如果是平年,则2月是28天。其它11个月份的天数不管是闰年还是平年都是确定的。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
kkqisheng 发表于 2015-3-24 23:37
基本思路:把当前月的天数,加上之前N个月的天数,就是这一年的第几天。比如3月24日,就是1月+2月的天数, ...

同意,讲的和对
回复 使用道具 举报
利用calendar
回复 使用道具 举报
Calendar 是一个日期类,将输入的数据解析成日期之后直接调用Calendar类的方法,简单粗暴.
回复 使用道具 举报
咋做呢?//?
回复 使用道具 举报
  1. package com.itheima;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.text.DateFormat;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.Scanner;
  9. /**
  10. *
  11. * 第9题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,
  12. * 并且计算出是一年中的第几天。
  13. *
  14. */
  15. public class Test9 {

  16.        

  17.         public static void main(String[] args) {
  18.                 InputStreamReader isr = new InputStreamReader(System.in);
  19.                 BufferedReader br = new BufferedReader(isr);
  20.                 String dateStr;
  21.                 try {
  22.                         DateFormat date = new SimpleDateFormat("yyyy-MM-dd");
  23.                         Scanner scanner=new Scanner(System.in);
  24.                         String Datestring=scanner.next();
  25.                         Date in = date.parse(Datestring);
  26.                         Calendar cal = Calendar.getInstance();
  27.                         cal.setTime(in);

  28.                         int day = cal.get(Calendar.DAY_OF_MONTH); //日
  29.                         int month = cal.get(Calendar.MONTH) + 1; //月
  30.                         int year = cal.get(Calendar.YEAR ); //年
  31.                        
  32.            //根据蔡勒(Zeller)公式    week=(y+[y/4]+[c/4]-2*c+[26(m+1)/10]+d-1)%7
  33.             /**
  34.              * c代表世纪减1 ,y带年份后两位,m代表月份(3<=m<=14),d代表日期
  35.              */
  36.                 /*        int m=month;
  37.             int d=day;
  38.             if(m>=3){
  39.                     int c=year/100;
  40.                 int y=year%100;
  41.                
  42.               int week=(y+y/4+c/4-2*c+26*(m+1)/10+d-1)%7;
  43.               System.out.println(year+"-"+month+"-"+day+"是星期"+week);}
  44.             if(m==1||m==2){
  45.                     int c=(year-1)/100;
  46.                 int y=(year-1)%100;
  47.                 System.out.println(y+" "+c);
  48.                     int week=(y+y/4+c/4-2*c+26*(m+13)/10+d-1)%7;
  49.             System.out.println(year+"-"+month+"-"+day+"是星期"+week);
  50.             }
  51.             */
  52.                         //注释的这一段是计算是星期几的,下面的就是计算是第几天的
  53.             int a[]={0,31,59,90,120,151,181,212,243,273,304,334,365};//平年每月累加天数
  54.             int b[]={0,31,60,91,121,152,182,213,244,274,305,335,366};//闰年每月累加天数
  55.                     if( (year%4==0&&year%100!=0)||(year%400==0) ){//闰年
  56.                             int count =a[month-1]+day;
  57.                             System.out.println(year+"-"+month+"-"+day+"是"+year+"年的第"+count+"天");
  58.                     }else{
  59.                                 int count=b[month-1]+day;
  60.                                 System.out.println(year+"-"+month+"-"+day+"是"+year+"年的第"+count+"天");
  61.                     }
  62.                     
  63.                        
  64.                 } catch (Exception e) {
  65.                         e.printStackTrace();
  66.                 }
  67.         }

  68. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马