![]() |
蔡勒演算法 |
其中w代表星期
c代表世紀數減1(年份前兩位數)
y代表年(兩位數)
m代表月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算)
d代表日
[ ]稱作高斯符號,代表取整,即只要整數部份。
mod代表同餘(這裡代表括號裡除以7後的餘數)
//注:資料取自維基百科
- import java.util.Scanner;
- public class C1
- {
- public static void main(String[] args)
- {
- Scanner input = new Scanner(System.in);
- //創建並提示使用者輸入年,月,日
- System.out.println("Enter year: (e.g. , 2012)");
- int a = input.nextInt(); //年
- System.out.println("Enter month: 1-12:");
- int m = input.nextInt(); //月
- System.out.println("Enter the day of month: 1-31:");
- int c= input.nextInt(); //日
- int q = c;
- //判斷是否為1月或2月,如果是,年數要減1
- if(m == 1 || m == 2)
- {
- a = a - 1;
- }
- //計算世紀與年份
- int j = a / 100; //世紀
- int k = a % 100; //年份
- //計算m,1月為13月、2月為14月,其餘月份不變
- if( m == 1 )
- {
- m = 13;
- }
- if( m == 2)
- {
- m = 14;
- }
- if( 3 >= m || m <= 12 )
- {
- m = m;
- }
- //計算
- int d = 26 * ( m + 1 ) / 10;
- //計算剩公式剩餘部分
- int h = ( q + d + k + ( k /4 ) + ( j / 4 ) + ( 5 * j ) )% 7;
- //判斷該日為星期幾
- if(h == 0)
- {
- System.out.println("Day of the week is Saturday");
- }
- if(h == 1)
- {
- System.out.println("Day of the week is Sunday");
- }
- if(h == 2)
- {
- System.out.println("Day of the week is Monday");
- }
- if(h == 3)
- {
- System.out.println("Day of the week is Tuesday");
- }
- if(h == 4)
- {
- System.out.println("Day of the week is Wednesday");
- }
- if(h == 5)
- {
- System.out.println("Day of the week is Thursday");
- }
- if(h == 6)
- {
- System.out.println("Day of the week is Friday");
- }
- }
- }
沒有留言:
張貼留言