編寫一個程序來計算復活節的日期。復活節週日是春季第一次滿月後的第一個星期日。通過19
計算復活節的日期
- 讓
y
是年份(如1800年或2001年) - 鴻溝
y
,並呼籲其餘a
: 使用由數學家卡爾·弗里德里希·高斯發明了算法在1800年。忽略商。 - 除以
y
由100
得到商b
和餘數c
。 - 除以
b
由4
得到商d
和餘數e
。 - 除以
8 * b + 13
由25
得到商。忽略其餘部分。 - 除以
19 * a + b - d - g + 15
由30
得到餘數h
。忽略 商。 - 將
c
除以4
得到商j
和餘數k
。 - 除以
a + 11 * h
由319
得到商m
。忽略其餘部分。 - 將
2 * e + 2 * j - k - h + m + 32
除以7
得到餘數r
。忽略商。 - 除以
h - m + r + 90
由25
得到商n
。忽略剩下的 。 - 將
h - m + r + n + 19
除以32
得到p
的餘數。忽略 商。
然後復活節在n
個月的一天p
。
例如,如果y爲2001:
a = 6
b = 20
c = 1
d = 5
e = 0
g = 6
h = 18
j = 0
k = 1
m = 0
r = 6
n = 4
p = 15
因此,在2001年復活節落在4月15日
確保您提示用戶一年,並讓用戶輸入年。另外,請確保您輸出p和n的值並使用描述值輸出的相應消息。
我有點麻煩把它放到Java代碼中。這是我試過的:
import java.util.Scanner;
public class Easter {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int y = 2014;
int a = y % 19;
int b = y/100;
int c = y % 100;
int d = b/4;
int e = b % 4;
int g = (8 * b + 13)/25;
int h = (19 * a + b - d - g + 15) % 30;
int j = c/4;
int k = c % 4;
int m = (a + 11 * h)/319;
int r = (2 * e + 2 * j - k - h + m + 32) % 7;
int n = (h - m + r + 90)/25;
int p = (h - m + r + n + 19) % 32;
getEasterSundayMonth = n;
System.out.println("Month: " + Easter.getEasterSundayMonth());
}
}
這就是我所擁有的。我不知道如何分配東西,就像我試圖讓getEasterSundayMonth
等於n
的值一樣,很確定它不對。我從哪裏出發?
是的,這絕對會幫助我,這是我問的事情之一。向正確的方向推進將是可愛的,因爲我根本不能問教授。 – 2014-09-24 16:48:13
嗯......看起來你已經完成了。你只需要在屏幕上打印p和n並指定它們是什麼 - System.out.println(「Month:」+ n); – RockOnRockOut 2014-09-24 16:50:46
謝謝搖滾我一定會那樣做,但天青是正確的。我的教授很努力,他的成績非常困難。我將如何提示用戶? – 2014-09-24 16:54:31