小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?
import java.util.Scanner;
public class test3 {
public static void main(String[] args){
int n=20220101;//初始日期
String []str={"012", "123","234","345","456","567","678","789"};//所有的顺子
int count=0;//计数器
while (n<=20221231){
//while循环2022年所有的日期
if (determine(n)){
if (determine1(n+"",str)){//n+""的目的是使int类型转换为String类型
count++;
//调用determine和determine1方法判断所循环的日期是否为顺子
}
}
n++;
}
System.out.println(count);
}
public static boolean determine(int n){
//判断日期是否合法
int month=n%10000/100;//求出所在月份
int day=n%100;//求出所在日期
int []str={31,28,31,30,31,30,31,31,30,31,30,31};//1~12月每个月各有的天数
if (day<=str[month-1]&&day>0){
return true;
}
return false;
//判断日期是否大于该月最大日期
}
public static boolean determine1(String s,String[]str){
//判断是否有顺子
for (int i=0;i<str.length;i++){
//顺子有多少个就循环多少遍
if (s.contains(str[i])){
//contains方法判断是否有顺子出现
return true;
}
}
return false;
}
}