我運行該程序,它工作正常,我不知道我做了什麼,但這是我在對話框中得到的。它應該說4月5日不錯5程序工作正常,但現在我無法發現錯誤
Please enter a year to calculate Easter Sunday
>2015
error5
任何人都可以發現錯誤來自哪裏?另外一個問題是我需要所有的案例1-12和所有的月份?或者我可以只用四月來得到,因爲它是唯一一個用來計算復活節星期日的月份。
import java.util.Scanner;
public class Easter
{
public static void main(String[] args)
{
System.out.print("Please enter a year to calculate Easter Sunday\n>");
Scanner s = new Scanner(System.in);
int inputted = getResult(s);
while(inputted <= 0)
{
System.out.print("Expected a positive year. Please try again:\n>");
inputted = getResult(s);
}
System.out.println(getEasterSundayDate(inputted));
}
private static int getResult(Scanner s)
{
while(!s.hasNextInt())
{
System.out.print("Expected a valid year. Please try again:\n>");
s.nextLine();
}
return s.nextInt();
}
public static String getEasterSundayDate(int year)
{
int a = year % 19,
b = year/100,
c = year % 100,
d = b/4,
e = b % 4,
g = (8 * b + 13)/25,
h = (19 * a + b - d - g + 15) % 30,
j = c/4,
k = c % 4,
m = (a + 11 * h)/319,
r = (2 * e + 2 * j - k - h + m + 32) % 7,
n = (h - m + r + 90)/25,
p = (h - m + r + n + 19) % 32;
String result;
switch(n)
{
case 1:
result = "April ";
break;
default:
result = "error";
}
return result + p;
}
}
做過任何基本的調試,比如當你觸發'default'時拋出'n'的值? – 2014-09-25 15:38:18
我手邊沒有Java編譯器,但是定義那些字母變量的所有行似乎都很奇怪。是否保證他們會被初始化,以便他們的價值如預期? – 2014-09-25 15:40:16
您的變量名稱需要比現在更具描述性。 'n'現在可能有上下文,但上午9點怎麼樣?它也有助於在你的'default'語句中打印出該變量來查看它的值。 – Makoto 2014-09-25 15:43:00