
这道题只需要暴力枚举每一个情况就可以
代码奉上
java
import java.util.Scanner;
public class Main {
static int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
static boolean check(int Y , int M , int D) {
if (M == 0 || M > 12) return false;
if (D == 0 || M != 2 && D > days[M]) return false;
if (M == 2) {
int leap = Y % 100 != 0 && Y % 4 == 0 || Y % 400 == 0 ? 1 : 0;
if (D > 28 + leap) return false;
}
return true;
}
public static void main(String[] args) {
//将字符串转换为数字
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String[] parts = input.split("/");
int AA = Integer.parseInt(parts[0]);
int BB = Integer.parseInt(parts[1]);
int CC = Integer.parseInt(parts[2]);
for (int i = 19600101; i <= 20591231; i++) {
int year = i / 10000;
int Month = i / 100 % 100;
int day = i % 100;
if (check(year, Month, day)) {
if (year % 100 == AA && Month == BB && day == CC || year %100 == BB && Month == CC && day == AA || year %100 == CC && Month == AA && day == BB) {
System.out.printf("%02d-%02d-%02d\n", year, Month, day);
}
}
}
}
}
没有什么好解释的,主要想说一下paresInt和valueOf的区别
我们要首先说一下基本类型和对象的区别:
基本类型 = 纯数值,光秃秃,啥功能没有 对象 = 装数值的 "盒子",有功能、有方法、有属性
除了那8个基本类型,剩下的都是对象
基本类型:
- 只有值,没有任何方法 你不能写
a.xxx,会报错 - 存的就是数字本身
- 速度极快
- 不能放进集合(List、Map)
- 赋值就是复制值
int b = a;复制的是 10 这个值
对象:
- 是一个 "东西",有方法、有功能
- 存的是地址(引用)
- 可以放进集合
- 赋值是复制地址
基本类型 = 一张钞票(只有面值,没功能)
对象 = 一个钱包(里面有钱,还能打开、存放)
现在说一下paresInt和valueOf的区别:
Integer.parseInt(s) → 得到 基本类型 int
Integer.valueOf(s) → 得到 对象 Integer
什么时候用哪个?
用 parseInt
-
做计算
-
存到
int变量里 -
90% 的日常情况都用它
用 valueOf
-
要放进 集合(List、Map)
-
需要 对象 时