五十道编程小题目 --- 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天
题目:输入某年某月某日,判断这一天是这一年的第几天?
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天
相关文章推荐
- 五十道编程小题目 --- 04 正整数分解质因数 java
- 五十道编程小题目 --- 10 反弹的小球 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 04堆排序
- 五十道编程小题目 --- 37 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 07归并排序
- 五十道编程小题目 --- 06 最大公约数和最小公倍数 java
- 五十道编程小题目 --- 25 回文数 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 06快速排序
- 五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
- 五十道编程小题目 --- 33 杨辉三角 java
- 五十道编程小题目 --- 08 求s=a+aa+aaa+aaaa+aa...a的值 java
- 五十道编程小题目 --- 20 java
- 五十道编程小题目 --- 12 企业发放的奖金根据利润提成 java
- 五十道编程小题目 --- 28 八大排序算法 java 之 05冒泡排序
- 五十道编程小题目 --- 02 找素数(质数)java
- 五十道编程小题目 --- 09 完数 java
- 五十道编程小题目 --- 17 猴子吃桃子问题 java
- 五十道编程小题目 --- 19 打印菱形 java
- 五十道编程小题目 --- 29 java
- 五十道编程小题目 --- 30 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 java