如题。。。
判断某一天是今年的第几天
解题思路
- 先计算出当月月份之前的天数,因为根据年份和月份都可以确定每一个具体的天数
- 把上一步计算出来值和天数相加即是答案
模块划分
- 获取某一个月份的天数的模块
- 是否是论年的模块
- 获取某一个月份之前月份的累积天数
函数实现
- 是否是论年的模块
// isLeapYear 判断是否是润年
public static boolean isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
- 获取某一个月份的天数的模块
// getMonthDay 获取某一个月份的天数
public static int getMonthDay(int year, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
return 28 + (isLeapYear(year) ? 1 : 0);
default:
return 30;
}
}
- 获取某一个月份之前月份的累积天数
// getTotalDaySinceMonth 获取某一个月份之前月份的累积天数
public static int getTotalDaySinceMonth(int year, int month) {
int totalDay = 0;
for (int i = 1; i < month; i++) {
totalDay += getMonthDay(year, month);
}
return totalDay;
}
最后程序
package basic;
import java.util.Scanner;
public class Main {
// isLeapYear 判断是否是润年
public static boolean isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
// getMonthDay 获取某一个月份的天数
public static int getMonthDay(int year, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
return 28 + (isLeapYear(year) ? 1 : 0);
default:
return 30;
}
}
// getTotalDaySinceMonth 获取某一个月份之前月份的累积天数
public static int getTotalDaySinceMonth(int year, int month) {
int totalDay = 0;
for (int i = 1; i < month; i++) {
totalDay += getMonthDay(year, i);
}
return totalDay;
}
//
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.printf("请输入年月日(格式2020-01-02):");
String str = in.next();
String[] split = str.split("-");
int year = Integer.parseInt(split[0]);
int month = Integer.parseInt(split[1]);
int day = Integer.parseInt(split[2]);
int totalDay = getTotalDaySinceMonth(year, month);
System.out.println("总天数为:" + (totalDay + day));
}
}