黑马程序员技术交流社区
标题:
每日一题
[打印本页]
作者:
Fangjie
时间:
2016-6-12 15:13
标题:
每日一题
输入某年某月某日,判断它是这一年的第几天?
作者:
大笑哈哈
时间:
2016-6-12 18:34
calendar set方法 然后get方法字段为DAY_OF_YEAR
作者:
我是你岁哥❤环
时间:
2016-6-12 21:57
本帖最后由 我是你岁哥❤环 于 2016-6-12 21:58 编辑
<div class="blockcode"><blockquote>
/*
输入某年某月某日,判断它是这一年的第几天?
思路:
1.定义年月日 year, month, day 分别存储输入的年月日
2.根据输入的年份year,判断是不是闰年,如果是闰年,2月份是29天,平年是28天
3.判断这一年的第几天就是之前所有月份,(month-1)个月里的每个月的天数,循环累加,然后再加上这个day
判断是不是闰年的两个条件: 1、能被4整除但不能被100整除
2、能被400整除
*/
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = 0;
int month = 0;
int day = 0;
boolean flag = false; //定义标记位,false表示输入日期没有错误
int count = 0;
int dayOfMonth = 0;
do {
System.out.println("请输入年份:");
year = sc.nextInt();
System.out.println("请输入月份:");
month = sc.nextInt();
System.out.println("请输入日期:");
day = sc.nextInt();
//简单验证一下
if (year<=0 || month<=0 || month >12 || day<=0 || day>31) {
System.out.println("您输入的日期有误,请重新输入");
flag = true; //重新定义标记位,true表示输入日期错误
}
}
while (flag);
//(month-1)个月里的每个月的天数,循环累加
for (int i=0; i<month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayOfMonth = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayOfMonth = 30;
break;
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) {
dayOfMonth = 29;
} else {
dayOfMonth = 28;
}
break;
}
count = count + dayOfMonth;
}
System.out.println("这是一年中的第 " + (count+day) + " 天");
}
}
复制代码
作者:
Fangjie
时间:
2016-6-13 07:10
赞一个
!
作者:
Fangjie
时间:
2016-6-13 07:35
大笑哈哈 发表于 2016-6-12 18:34
calendar set方法 然后get方法字段为DAY_OF_YEAR
谢谢,学习啦!
作者:
Fangjie
时间:
2016-6-13 07:38
我是你岁哥❤环 发表于 2016-6-12 21:57
第48行 for (int i=0; i<month; i++) {好像要改成int i=1;i<=month;i++;不然i=0在swith里面找不到相应的月份。
作者:
孟小垚
时间:
2016-6-13 08:10
看大神的帖,学习复习快
作者:
一个大西瓜
时间:
2016-6-13 20:49
好好看 好好学
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2