问题描述:
在平时日常生活中通常需要回答当月的某日期为星期几的问题,常常通过提供你当月某天是星期几,然后需要计算当月的某日期为星期几。提供当月日期和星期的数(用阿拉伯数表示,0为Sunday,1为Monday,2为Tuesday,3为Wednesday,4为Thursday,5为Friday,6为Saturday),然后提供一个当月的日期号数,请计算该日期号数为星期几,使用英文单词输出星期几。
输入:
标准输入,输入的第一行为计算用例数为整数n,接下来的n行,每行有3个由空格分开整数,其中第一个整数为当月的日期数,第二个整数为第一个整数表示的日期的星期几,第三个整数是需要你回答当月该日期是星期几,如该行输入为:1 3 10,表示当月的1号为星期三,请问当月的10号为星期几。
输出:
标准输出:每一个计算的结果使用一行输出,输出使用英文单词输出星期几。
输入样例:
2
1 3 10
10 0 5
输出样例:
Friday
Tuesday
代码展示
import java.util.Scanner;
public class Text16 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i ++){
int day1 = sc.nextInt();
int week = sc.nextInt();
int day2 = sc.nextInt();
String [] str = {"Sunday","Monday","Tuesday",
"Wednesday","Thursday","Friday","Saturday"};
int date = day2 - day1;
if(date > 0){
date = (date + week) % 7;
}else if(date < 0){
date = (date + week) % 7 + 7;
// 样例 :10 0 5
// 0 表示星期天
// 0 1 2 3 4 5 6
// -5 表示往前数5天
// -5 + 7 = 2
}else{
date = week;
}
System.out.println(str[date]);
}
}
}
本题目的一个小细节:
当 date 为负数时,要记得在后面加上7
代码可以简化一下将date > 0和date < 0合并简化为
date = ((date + week) % 7 + 7) % 7,
我是为了让思路清晰就把其分开了。