题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
题目写代码难在细心
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year=2000;
int mon=1;
int day=1;
int weekend=6;
int km=0;
while(true){//先判断是否为闰年
if((year%4==0 && year%100!=0)||(year%400==0)){
months[2]=29;
}
else{
months[2]=28;
}
//跑步路程的判断
if(day==1 || weekend==1){
km+=2;
}
else{
km++;
}
day++;
weekend++;
//月份和年份、星期的迭代
if(day>months[mon]){
mon++;
day=1;
if(mon>12){
year++;
mon=1;
}
}
if(weekend>7){
weekend%=7;
}
//终止条件
if(year==2020 && mon==10 && day==1){
km+=2;
break;
}
}
System.out.println(km);
}
}
还有一个调用
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();//导入Calendar类,获取年、月、周、日
c.set(2000,0,1);//2000.1.1,月份0-11
int year = 0;
int month = 0;
int day = 0;
int week = 0;
int sum = 0;
while(true) {
if(year==2020&&month==10&&day==1) {
break;
}
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH)+1;//月份0-11
day = c.get(Calendar.DAY_OF_MONTH);
week = c.get(Calendar.DAY_OF_WEEK);
if(week==2||day==1) {//星期日——1,星期一——2
sum = sum + 2;
}else {
sum = sum + 1;
}
c.add(Calendar.DAY_OF_MONTH,1);//日期后推
}
System.out.println(sum);
}
}