|
Here is the algorithm by Carl Friedrich Gauss :
Step 1 : Let Y be the year
Step 2 : Divide Y by 19 to get a remainder as A
Step 3 : Divide Y by 100 to get a quotient B and a remainder C
Step 4 : Divide B by 4 to get a quotient D and a remainder E
Step 5 : Divide (8*B+13) by 25 to get a quotient G
Step 6 : Divide (19*A+B-D-G+15) by 30 to get a remainder H
Step 7 : Divide C by 4 to get a quotient J and a remainder K
Step 8 : Divide (A+11*H) by 319 to get a quotient M
Step 9 : Divide (2*E+2*J-K-H+M+32) by 7 to get a remainder R
Step 10: Divide (H-M+R+90) by 25 to get a quotient N
Step 11: Divide (H-M+R+N+19) by 32 to get a remainder P
So for a given year Y Easter Sunday falls on day P and month N
Step 2 : Divide Y by 19 to get a remainder as A
Step 3 : Divide Y by 100 to get a quotient B and a remainder C
Step 4 : Divide B by 4 to get a quotient D and a remainder E
Step 5 : Divide (8*B+13) by 25 to get a quotient G
Step 6 : Divide (19*A+B-D-G+15) by 30 to get a remainder H
Step 7 : Divide C by 4 to get a quotient J and a remainder K
Step 8 : Divide (A+11*H) by 319 to get a quotient M
Step 9 : Divide (2*E+2*J-K-H+M+32) by 7 to get a remainder R
Step 10: Divide (H-M+R+90) by 25 to get a quotient N
Step 11: Divide (H-M+R+N+19) by 32 to get a remainder P
So for a given year Y Easter Sunday falls on day P and month N
Here we will use a JLabel and a JTextField for entering the year another JLabel for displaying the result and a JButton for computing
JLabel year = new JLabel("Enter Year");
JTextField inputYear = new JTextField(20);
JButton submit = new JButton("Submit");
JLabel Lresult = new JLabel();
Now in the constructor class for titile of the frame , type of layout , size , position , and some panels to our application.
setTitle("Easter Sunday");
setSize(400, 400);
setLayout(new GridLayout(5, 2));
mainPanel = new JPanel();
inputPanel = new JPanel();
buttonPanel = new JPanel();
resultPanel = new JPanel();
inputPanel.add(year);
inputPanel.add(inputYear);
buttonPanel.add(submit);
resultPanel.add(Lresult);
add(mainPanel);
add(inputPanel);
add(buttonPanel);
add(resultPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
submit.addActionListener(this);
setLocationRelativeTo(null);
Now when the Compute button is clicked the calculation isperformed and the result is set in the JLabel Lresult.
public void actionPerformed(ActionEvent ae) {
try {
if (ae.getSource() == submit) {
int y = Integer.parseInt(inputYear.getText());
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;
String result;
switch (n) {
case 1:
result = "January ";
break;
case 2:
result = "February ";
break;
case 3:
result = "March ";
break;
case 4:
result = "April ";
break;
case 5:
result = "May ";
break;
case 6:
result = "June ";
break;
case 7:
result = "July ";
break;
case 8:
result = "August ";
break;
case 9:
result = "September ";
break;
case 10:
result = "October ";
break;
case 11:
result = "November ";
break;
case 12:
result = "December ";
break;
default:
result = "error";
}
Lresult.setText("The date of Easter for the year " + y + " is " + result + p);
}
} catch (Exception e) {
}
}The Complete Code
package eastercalendar;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
/**
*
* @author Avinash
*/
public class EasterCalendar extends JFrame implements ActionListener {
JLabel year = new JLabel("Enter Year");
JTextField inputYear = new JTextField(20);
JButton submit = new JButton("Submit");
JLabel Lresult = new JLabel();
JPanel mainPanel, inputPanel, buttonPanel, resultPanel;
public EasterCalendar() throws Exception {
setTitle("Easter Sunday");
setSize(400, 400);
setLayout(new GridLayout(5, 2));
mainPanel = new JPanel();
inputPanel = new JPanel();
buttonPanel = new JPanel();
resultPanel = new JPanel();
inputPanel.add(year);
inputPanel.add(inputYear);
buttonPanel.add(submit);
resultPanel.add(Lresult);
add(mainPanel);
add(inputPanel);
add(buttonPanel);
add(resultPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
submit.addActionListener(this);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new EasterCalendar().setVisible(true);
} catch (Exception ex) {
Logger.getLogger(EasterCalendar.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
@Override
public void actionPerformed(ActionEvent ae) {
try {
if (ae.getSource() == submit) {
int y = Integer.parseInt(inputYear.getText());
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;
String result;
switch (n) {
case 1:
result = "January ";
break;
case 2:
result = "February ";
break;
case 3:
result = "March ";
break;
case 4:
result = "April ";
break;
case 5:
result = "May ";
break;
case 6:
result = "June ";
break;
case 7:
result = "July ";
break;
case 8:
result = "August ";
break;
case 9:
result = "September ";
break;
case 10:
result = "October ";
break;
case 11:
result = "November ";
break;
case 12:
result = "December ";
break;
default:
result = "error";
}
Lresult.setText("The date of Easter for the year " + y + " is " + result + p);
}
} catch (Exception e) {
}
}
}OUTPUT :
| Java Application for computing the date of Easter Sunday |
| Java Application for computing the date of Easter Sunday |
| Java Application for computing the date of Easter Sunday |
Related Programs :
Cpp Program to calculate the date of Easter Sunday
C Program to Calculate Easter Sunday