我运行该程序,它工作正常,我不知道我做了什么,但这是我在对话框中得到的。它应该说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