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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qiaojinhui 中级黑马   /  2013-5-14 00:29  /  1047 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 qiaojinhui 于 2013-5-14 09:08 编辑

输入某年某月某日,判断这一天是这一年的第几天    ?

5 个回复

倒序浏览
{:soso_e134:}
回复 使用道具 举报
1、定义一个数组int[] months = {31, 28, 31, 30, 31, 30, 31,  31, 30, 31, 30},只需保存1至11月的天数,后面再处理二月有29天的特殊情况
2、假设是x年y月z天,先设天数day= 0;然后用for循环将(y-1)月的天数之和赋给day,再给day加上z。
3、如果该年是闰年,且月份大于2,则再给day加1
4、如果((x % 400 == 0) || (x%100 != 0 && x%4 == 0)) 为true则x为闰年

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1 不错。。思路清晰。。

查看全部评分

回复 使用道具 举报
本帖最后由 花开花落总相似 于 2013-5-14 07:48 编辑

   好吧 我给你写段代码 但是算法麻烦的那个 我就不写给你了  当初我也是每个月每个月算的 下面判断的有点麻烦 我懒得在优化了
//import java.util.Calendar.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class date{
private static int year,month,day;

date(){
  year = 2000;
  month = 7;
  day = 7;
};

date(int year, int month, int day){
  this.year = year;
  this.month = month;
  this.day = day;
}
date(int month, int day){
  this.month = month;
  this.day = day;
  year = 2000;
}
public static void setMonth(int monthset){
  month = monthset;
}

public static void setDay(int dayset){
  day = dayset;
}

public static void setYear(int yearset){
  year = yearset;
}
public static int getMonth(){
  return month;
}

public static int getDay(){
  return day;
}

public static int getYear(){
  return year;
}

public static int selectNian(){
  int a =date.getYear();
  int d2;
  if((a%4==0&&a%100!=0)||a%400==0){
   d2 = 29;
   System.out.println("今年是闰年二月有29天");
  }else { d2 = 28;
   System.out.println( "今年不是闰年二月有28天");
  }
  return d2;
}
public static int dijitian(date d){    //这里可以用数组 也可以写算法 但是我当初写的时候 用算法 算月份 搞了十多分钟没搞出来 就一个愤怒 直接打出来了 嘻嘻
  int n = d.selectNian();
  int x = d.getMonth();
  int num = 0;
  if(x ==1){ num = d.getDay();}
  else if(x ==2){num = 31+d.getDay() ;}
  else if(x ==3){num = 31+n+d.getDay();}
  else if(x ==4){num = 62+n+d.getDay();}
  else if(x ==5){num = 92+n+d.getDay();}
  else if(x ==6){num = 123+n+d.getDay();}
  else if(x ==7){num = 153+n+d.getDay();}
  else if(x ==8){num = 184+n+d.getDay();}
  else if(x ==9){num = 215+n+d.getDay();}
  else if(x ==10){num = 245+n+d.getDay();}
  else if(x ==11){num = 276+n+d.getDay();}
  else if(x ==12){num = 306+n+d.getDay();}
  else{System.out.println("对不起,您输入的参数有误");}
  return num;
}
public static date input(){                //这里 你自己写吧  我那个写好的代码 找不到了 不想写了 你直接调用键盘输出 然后上面的年份有构造函数 直接调用就OK了 我懒得弄了
  BufferedReader br = new BufferedReader(new InputStreamReader());
  
}
}
public class DemoDay{
public static void main(String[]args){
  date d1 = new date(1900,7,7);
  int c = date.dijitian(d1);
  System.out.println(c);
}
}

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
花开花落总相似 发表于 2013-5-14 07:45
好吧 我给你写段代码 但是算法麻烦的那个 我就不写给你了  当初我也是每个月每个月算的 下面判断的有点 ...

不错 。。。果断加分。。。。
回复 使用道具 举报
楼主。。。我提醒你结贴,不要嫌我烦啊。。。最近比较忙。。。
如果你感觉你懂了。。你就结贴。。不然你在接着问。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马