The next evolution of this project is to eventually create a graphical user interface(GUI). This is possible to do using Python. But, I want to use Java for this job so recreating the work I have already done in Java is the way to go.
So what’s first. The first thing is to write the extra function which I created to check if a value is in an array, the python code is:
def inArray(value, array): isIn = False for i in range(0, len(array)): if array[i] == value: isIn = True return isIn
The Java code does not look that dissimilar
public boolean inArray(int x, int[] array) { boolean isIn = false; for (int n : array) { if (n == x){ isIn = true; break; } } return isIn; }
The next function is the function which validates a date, again the python code looks like this:
def validDate(d, m, y): months_thirty0 = [4,6,7,11] months_thirty1 = [1,3,5,7,8,10,12] daysInMonth = 0 if inArray(m, months_thirty0): daysInMonth = 30 elif inArray(m, months_thirty1): daysInMonth = 31 elif (y % 4) == 0: daysInMonth = 29 else: daysInMonth = 28 return (d <= daysInMonth)
Again the Java code does not look that dissimilar:
public boolean validDate(int d, int m, int y) { int[] monthsThirty0 = {4,6,7,11}; int[] monthsThirty1 = {1,3,5,7,8,10,12}; int daysInMonth = 0; if (inArray(m, monthsThirty0)){ daysInMonth = 30; }else if((inArray(m, monthsThirty1))){ daysInMonth = 31; }else if(y%4 == 0){ daysInMonth = 29; }else{ daysInMonth = 28; } return (d <= daysInMonth); }
All that we have to do now is translate the calculation function in the Zeller program to Java. As before the python code is:
import math from myfuncs import validDate def zeller(day, month, year): days = ['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] if validDate(day, month, year): if month < 3: month = month + 12 year = year -1 calc = (day + math.floor((13*(month+1))/5) + year + math.floor(year/4) - math.floor(year/100) + math.floor(year/400)) % 7 return days[calc] else: return 'Error: Invalid Date'
Again the Java function is not that dissimilar, the only difference is we first have to create a myFunctions object on line 6:
public String Calculate(int day, int month, int year) { String[] days = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; double calc; myFunctions mf = new myFunctions(); if (mf.validDate(day,month,year)){ if (month < 3) { month = month + 12; year = year - 1; } calc = (day + Math.floor((13*(month+1)/5)) + year + Math.floor(year/4) - Math.floor(year/100) + Math.floor(year/400))%7; return days[(int)calc]; }else{ return "Error: Invalid Date"; } }
The translation is now complete the next job is to create the GUI.