代码如下:
解题思路请看注释
import java.util.Scanner;
public class RiQiTianShu {
public static void main(String[] args) {
System.out.println("请输入日期格式为xxxx年x月x日");
Scanner sc = new Scanner(System.in);
String date = sc.next();
int year_index = date.indexOf("年");
int month_index = date.indexOf("月");
int day_index = date.indexOf("日");
//获取年月日的下标
int sum = 0;
int mid = 0;
String year = date.substring(0, year_index);
String month = date.substring(year_index + 1, month_index);
String day = date.substring(month_index + 1, day_index);
//通过下标获取想要得到的年月日字段
int year_number = Integer.parseInt(year);
int month_number = Integer.parseInt(month);
int day_number = Integer.parseInt(day);
//将字符串转为int
for (int i = 1; i < month_number; i++) {
//通过for循环将各个月的日期累加
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
mid = 31;
break;
case 4:
case 6:
case 9:
case 11:
mid = 30;
break;
case 2:
mid = 28;
default:
break;
}
sum += mid;
}
boolean isLeap = false;
if ((year_number % 4 == 0 && year_number % 100 != 0) || year_number % 400 == 0) {
isLeap = true;
}
if (isLeap == true && month_number > 2) {
sum = sum + 1;
}
//判断是否为闰年,闰年且月份在二月以后需要将日期加1
System.out.println("今天是今年的第" + (sum + day_number) + "天");
//注意加括号不然sum+day_number将变成字符串
}
}