Java中计算出某个日期是一年当中的第几天
在网上看到有一位网友提问:
接受用户输入一个月份和一个日期如:3 21表示输入的是3月21号计算出3月21日是一年当中的第几天。请严格遵守历法。。 1、完成功能。 2、在完成第一步的情况,请考虑闰年问题。用户要输入年月日三个整数。3、在完成第二步的前提下,请考虑输入非法的问题。
运行结果:
/**
*
*/
package first;
import java.util.Scanner;
/**
* @author HD
*
*/
public class Datemain {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("接受用户输入一个月份和一个日期,计算出是一年当中的第几天");
System.out.println("\t输入月份后,按下回车,再输入日期");
System.out.println("\n请输入4位数年份:");
while(true) {
int year,month,day = 0,x,i,j,sum = 0,cal=0;
Scanner scaner = new Scanner(System.in);
year = scaner.nextInt();
if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
System.out.println("请输入月份:");
month= scaner.nextInt();
if(month == 2){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 30 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
if(month % 2 != 0){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 31 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
if(month !=2 && month % 2 == 0){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 30 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
System.out.println( "您输入的是:" + year+"年"+ month + "月" + day + "日");
int arr[] = {31,29,31,30,31,30,31,30,31,30,31,30};
for(i = 0;i < month-1; i++) {
sum += arr[i];
}
cal = sum + day;
System.out.println( year+"年"+ month + "月" + day + "日"+"是" + year+ "年" + "中第" + cal + "天" );
}
else {
System.out.println("请输入月份:");
month= scaner.nextInt();
if(month == 2){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 29 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
if(month % 2 != 0){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 31 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
if(month !=2 && month % 2 == 0){
System.out.println("请输入日期:");
day= scaner.nextInt();
while(day > 30 || day < 1) {
System.out.println("输入有误,重新输入日期:");
x =scaner.nextInt();
day = x;
}
}
System.out.println( "您输入的是:" + year+"年"+ month + "月" + day + "日");
int arr[] = {31,29,31,30,31,30,31,30,31,30,31,30};
for(i = 0;i < month-1; i++) {
sum += arr[i];
}
cal = sum + day;
System.out.println( year+"年"+ month + "月" + day + "日"+"是" + year+ "年" + "中第" + cal + "天" );
System.out.println("\n请继续输入4位数年份:");
}
}
}
}