java通过键盘输入某年某月某日,计算并输出这一天是这一年的第几天。例如,2001 年 3 月 5 日是这一年的第 64 天
时间: 2024-09-29 08:03:52 浏览: 34
在Java中,你可以创建一个简单的程序来实现这个功能。这里我们假设用户输入的是公历日期,并且不会考虑闰年的情况。我们可以利用基础的数学运算来计算:
首先,我们需要获取用户输入的年、月、日。然后按照以下步骤计算:
1. 对于二月,非闰年有28天,闰年有29天。判断是否是闰年的条件是:如果年份能被4整除但不能被100整除,或者是可以被400整除,那么这一年就是闰年。
2. 计算每个月的天数,对于一月和三月至十二月,直接用月份对应的天数(1月31天,3月31天...),2月则需要根据闰年情况调整。
3. 加上前几个月的总天数,从1月的第一天开始累加。
以下是代码示例:
```java
import java.util.Scanner;
public class DayCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份(1-12):");
int month = scanner.nextInt();
System.out.println("请输入日期:");
int day = scanner.nextInt();
// 如果是闰年,2月增加一天
boolean isLeapYear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
int daysInMonth = getDaysInMonth(month, isLeapYear);
int totalDays = (isLeapYear ? daysInMonth : daysInMonth - 1) + getPreviousMonthsTotalDays(year, month - 1);
System.out.println("这一天是一年的第 " + totalDays + " 天.");
}
private static int getDaysInMonth(int month, boolean isLeapYear) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
return isLeapYear ? 29 : 28;
default:
throw new IllegalArgumentException("Invalid month number");
}
}
private static int getPreviousMonthsTotalDays(int year, int previousMonth) {
int sum = 0;
for (int i = 1; i <= previousMonth; i++) {
sum += getDaysInMonth(i, false); // 假设所有年份都是平年,非闰年2月只有28天
}
return sum;
}
}
```
阅读全文