您的位置:首页 > 编程语言 > Java开发

五十道编程小题目 --- 14 java

2016-08-25 19:12 477 查看
【程序14】 
题目:输入某年某月某日,判断这一天是这一年的第几天? 
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,判断闰年
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;

public class Test14 {

static int[] a = {1,3,5,7,8,10,12};
static int[] b = {4,6,9,11};

private static List<int[]> day_31 = Arrays.asList(a);
private static List<int[]> day_30 = Arrays.asList(b);

//计算天数
public static int dayCount(int y,int m, int d){

if(y<0 || m<0 || d<0 || m>12 || d>31){
return -1;
}

Calendar c = Calendar.getInstance();
c.set(y, m-1, d);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
System.out.println("输入日期为:" + sdf.format(c.getTime())); //格式化时间

int yy = c.get(Calendar.YEAR); // 得到年份
int mm = c.get(Calendar.MONTH)+1; //得到月份,月份从0开始算,即一月是0
int dd = c.get(Calendar.DAY_OF_MONTH); //得到天

int day_sum =0;
if( (yy%4 == 0 && yy%100 != 0) || yy%100 == 0 ){ //判断闰年

for(int i=1; i<mm; i++){ //月累加
if(day_31.contains(i)){
day_sum += 31;
}else if(day_30.contains(i)){
day_sum +=30;
}else{
day_sum +=29;
}
}

}else{
for(int i=1; i<mm; i++){ //月累加
if(day_31.contains(i)){
day_sum += 31;
}else if(day_30.contains(i)){
day_sum +=30;
}else{
day_sum +=28;
}
}
}

day_sum += dd;

return day_sum;

}

public static void main(String[] args) {

System.out.println("请输入年月日:");
Scanner s = new Scanner(System.in);

System.out.println("该日期为本年的第" + dayCount(s.nextInt(), s.nextInt(), s.nextInt()) + "天");

}

}
输出结果为:
请输入年月日:
2015
2
12
输入日期为:2015-02-12
该日期为本年的第40天
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: