输入日期,计算日期在本年的天数
import java.util.Scanner;
public class benniantianshu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = 0, months = 0, date = 0;
while (true) {
year = inputNum(sc, 1, 3000, "年份");
months = inputNum(sc, 1, 12, "月份");
date = inputNum(sc, 1, 30, "日期");
boolean bb = validateDate(year, months, date);
if (bb)
break;
System.out.println("请输入合法日期");
}
System.out.println(year + "-" + months + "-" + date);
}
public static boolean validateDate(int year, int months, int date) {
boolean res = false;
switch (months) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
res = date <= 31 && date >= 1;
break;
case 4:
case 6:
case 9:
case 11:
res = date <= 30 && date >= 1;
case 2:
boolean bb = run(year);
if (bb)
res = date <= 29 & date >= 1;
else
res = date <= 28 && date >= 1;
default:
res = false;
break;
}
return res;
}
public static boolean run(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public static int inputNum(Scanner sc, int min, int max, String str) {
int res = 0;
while (true) {
System.out.println(str + ":");
String ss = sc.nextLine();
try {
res = Integer.parseInt(ss);
if (res >= min && res <= max)
break;
System.out.println("请输入合理的" + str + "数据");
} catch (Exception e) {
System.out.println("输入的数据不合法");
}
}
return res;
}
}