(科学:某天是星期几)泽勒一致性是由克里斯汀·泽勒开发的用于计算某天是星期几的算法。这个公式是:
其中:
h是一个星期中的某一天(0 为星期六;1 为星期天;2 为星期一;3 为星期二;4 为
星期三;5 为星期四;6为星期五)。
q 是某月的第几天。
m 是月份(3 为三月,4 为四月,……,12 为十二月)。一月和二月分别记为上一年
的 13 和 14月。
j是世纪数(即year/100)
k是该世纪的第几年(year%100)。
注意,公式中的除法执行一个整数相除。编写程序,提示用户输入年、月和该月的哪-天,然后显示它是一周中的星期几。下面是一些运行示例:
Enter year:(eg.,2012):2015
Enter month:1-12:1
Enter the day ofthe month: 1-31:25
Day of the week is Sunday
Enter year:(e.g.,2012):2012
Enter month:1-12:5
Enter the day of the month: 1-31:12
Day of the week is Saturday
提示:一月和二月在这个公式里是用 13 和14表示的。所以需要将用户输入的月份1转换为 13,将用户输入的月份2转换为14,同时将年份改为前一年。
package myjava;
import java.math.*;
import java.util.Scanner;
public class cy {public static void main(String[]args){int h,j,k;Scanner input = new Scanner(System.in);System.out.println("请输入年份(eg:2022):");int a=input.nextInt();System.out.println("请输入月份(1-12):");int m=input.nextInt();System.out.println("请输入这是这个月的哪一天(1-31):");int q=input.nextInt();if(m==1||m==2){m+=12;a-=1;}j=Math.abs(a/100);k=a%100;h=(q+26*(m+1)/10+k+k/4+j/4+5*j)%7;switch(h){case 1:System.out.println("这是星期一");break;case 2:System.out.println("这是星期二");break;case 3:System.out.println("这是星期三");break;case 4:System.out.println("这是星期四");break;case 5:System.out.println("这是星期五");break;case 6:System.out.println("这是星期六");break;case 7:System.out.println("这是星期日");break;}}
}
运行结果: