Easter という名前のクラス (以下を参照) と EasterTester という名前のテスター クラス (これもその下) を作成して、それを実行し、年の値をプラグインしました。目標は、指定された年の復活祭の日曜日の月と日を計算するためのガウスのアルゴリズムを実装することです。
私のコードは正常に動作しますが、フォローしている本と少し混乱しています。最初のコード リンクの下部にある 2 つの getter メソッドは、「必要ない」ため実装しないように指示されています。私のコードが立っているので、私は間違いなくそれらを必要としています。それに関して私が見逃しているものはありますか?
さらに、次のように使用することをお勧めする「Easter Class Public Interface」がリストされています。
calculateEaster(int aYear): 文字列
「UML メソッドの構文は、メソッドが整数パラメータを取り、文字列を返すことを示しています。」私はこのコメントを理解していないため、これらのガイドラインに従うためにコードを編集する方法がわかりません。
誰かがジレンマ/質問について明確にすることができれば、私は非常に感謝しています!
コード: /** * * @author b_t * */
クラスイースター{
/**
* @param n is the month
* @param p is the day
*/
private int n;
private int p;
// Comments via Cay Horstmann's "Big Java" 4th ed. on page 169; p.4.19
// Let y be the year (such as 1800 or 2001).
/**
*
* @param y this will hold the year that users enter
*/
Easter(int y) {
// Divide y by 19 and call the remainder a. Ignore the quotient.
int a = y % 19;
// Divide y by 100 to get a quotient b and a remainder c.
int b = y / 100;
int c = y % 100;
// Divide b by 4 to get a quotient d and a remainder e.
int d = b / 4;
int e = b % 4;
// Divide 8 * b + 13 by 25 to get a quotient g. Ignore the remainder.
int g = (8 * b + 13) / 25;
// Divide 19 * a + b - d - g + 15 by 30 to get a remainder h. Ignore the quotient.
int h = (19 * a + b - d - g + 15) % 30;
// Divide c by 4 to get a quotient j and a remainder k.
int j = c / 4;
int k = c % 4;
// Divide a + 11 * h by 319 to get a quotient m. Ignore the remainder.
int m = (a + 11 * h) / 319;
// Divide 2 * e + 2 * j - k - h + m + 32 by 7 to get a remainder r. Ignore the quotient.
int r = (2 * e + 2 * j - k - h + m + 32) % 7;
// Divide h - m + r + 90 by 25 to get a quotient n. Ignore the remainder.
n = (h - m + r + 90) / 25;
// Divide h - m + r + n + 19 by 32 to get a remainder p.
p = (h - m + r + n + 19) % 32;
}
/**
*
* @return n returns the month in which a given year's Easter Sunday will take place
*/
public int getEasterSundayMonth() {
return n;
}
/**
*
* @return p returns the day in which a given year's Easter Sunday will take place
*/
public int getEasterSundayDay() {
return p;
}
}
テスタークラスは次のとおりです。
public class EasterTester {
public static void main(String[] args)
{
Easter myEaster = new Easter(2002);
System.out.println("In 2002, Easter Sunday is: " + "month = " + myEaster.getEasterSundayMonth() + " and day = " + myEaster.getEasterSundayDay());
Easter myEaster2 = new Easter(2012);
System.out.println("In 2012, Easter Sunday is: " + "month = " + myEaster2.getEasterSundayMonth() + " and day = " + myEaster2.getEasterSundayDay());
}
}