Also Hallo ihr hab mal wieder ne blöde frage
Hab hier ein Programm geschrieben das mir anhand der Zellerschen Formel den Wochentag zu einem Datum ausrechnet und diesen Ausgibt
Sieht folgendermaßen aus :
Alles anzeigen
Lasst euch nicht durch diese Kommentare stören die sind nur für mich als Notzi gedacht
.... Naja jetzt kommen wir mal zum Punkt:) wie Ihr seht hab ich die Aufgabe hier mit geschachteltetn If Anweisungen gelöst
Uhrsprünglich wollte ich aber allerdings eine switch Anweisung realsieren hab dies aber leider nicht hinbekommen worauf ich
etwas im Forum gestöpert habe und dies gefunden hab:
Alles anzeigen
so nun ist das ja ungefähr die selbe Aufgabe blos das es da nach den österreichischen Feiertagen geht soweit ich das verstanden habe....
Nun meine Frage seh ich das richtig um bei meinem Fall eine switch Anweißung zu realisieren müsste ich erst eine Calender.jar oder ähnliches Importieren oder hat jemand eine bessere idee wie ich
die switch Anweiweißung realisiere ???
Ps: auch eine Erklärung des quellcodes (der mit der switch Anweißung also letzterer) wäre sehr nett ... falls denn da noch jemand genau durchblickt
Danke schonmal im Vorraus
Hab hier ein Programm geschrieben das mir anhand der Zellerschen Formel den Wochentag zu einem Datum ausrechnet und diesen Ausgibt
Sieht folgendermaßen aus :
Quellcode
- public class Zeller {
- public static void main(String[] args)
- {
- //System.out.println("Bitte geben Sie einen Tag ein? "); //überflüssiger Schritt
- int d = Console.readInt("Bitte geben Sie einen Tag ein ? ");
- //System.out.println("Bitte geben Sie einen Monat ein ? ");
- int m = Console.readInt("Bitte geben Sie einen Monat ein? ");
- //System.out.println("Bitte geben Sie ein Jahr ein? ");
- int j = Console.readInt("Bitte geben Sie ein Jahr ein ? ");
- //if(m<=13)
- //{ //if Schleife falsch!!
- //m+=12;
- //j--;
- //}
- if(m >12)
- {
- j-= 1; // if Schleife richtig !!
- }
- int y = j%100;
- int c = j/100;
- int w =(d+(26*(m+1)/10))+(((5*y)/4))+(c/4)+((5*c-1));
- int mod = 7;
- int aus = w%mod;
- System.out.println(aus);
- if (aus==0)
- {
- System.out.println("Sonntag");
- }
- if (aus==1)
- {
- System.out.println("Montag");
- }
- if(aus==2)
- {
- System.out.println("Dienstag");
- }
- if (aus==3)
- {
- System.out.println("Mittwoch");
- }
- if (aus==4)
- {
- System.out.println("Donnerstag");
- }
- if (aus==5)
- {
- System.out.println("Freitag");
- }
- if (aus==6)
- {
- System.out.println("Samstag");
- }
- }
- }
Lasst euch nicht durch diese Kommentare stören die sind nur für mich als Notzi gedacht
.... Naja jetzt kommen wir mal zum Punkt:) wie Ihr seht hab ich die Aufgabe hier mit geschachteltetn If Anweisungen gelöst
Uhrsprünglich wollte ich aber allerdings eine switch Anweisung realsieren hab dies aber leider nicht hinbekommen worauf ich
etwas im Forum gestöpert habe und dies gefunden hab:
Java-Quellcode
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.TreeMap;
- /**
- * Calculate austrian holidays. Valid since the year 1584.
- */
- public class HolidayCalc
- {
- private final int m_nYear;
- private final Map<Calendar, String> m_aHolidays = new TreeMap<Calendar, String> ();
- /**
- * Get the date representing eastzer sunday
- *
- * @return the date representing the easter sunday in the current year
- */
- private Calendar _getEasterSunday ()
- {
- int a = m_nYear % 19;
- int b = m_nYear / 100;
- int c = m_nYear % 100;
- int d = b / 4;
- int e = b % 4;
- int f = (b + 8) / 25;
- int g = (b - f + 1) / 3;
- int h = (19 * a + b - d - g + 15) % 30;
- int i = c / 4;
- int k = c % 4;
- int l = (32 + 2 * e + 2 * i - h - k) % 7;
- int m = (a + 11 * h + 22 * l) / 451;
- int n = (h + l - 7 * m + 114) / 31;
- int p = (h + l - 7 * m + 114) % 31 + 1;
- return new GregorianCalendar (m_nYear, n - 1, p);
- }
- /**
- * Add a new holiday
- *
- * @param nDay
- * the day: 1-31
- * @param nMonth
- * the month: 1-12
- * @param sWhich
- * name of the holiday
- */
- private void _addHoliday (int nDay, int nMonth, String sWhich)
- {
- m_aHolidays.put (new GregorianCalendar (m_nYear, nMonth - 1, nDay), sWhich);
- }
- /**
- * Add a new holiday
- *
- * @param aCal
- * the date to add
- * @param sWhich
- * name of the holiday
- */
- private void _addHoliday (Calendar aCal, String sWhich)
- {
- m_aHolidays.put (aCal, sWhich);
- }
- /**
- * Helper function to add/subtract days from a given date
- *
- * @param c
- * the source calendar
- * @param nDiffDays
- * the number of days to roll (signed!)
- * @return the resulting calendar
- */
- private Calendar _addDays (Calendar c, int nDiffDays)
- {
- Calendar c2 = (Calendar) c.clone ();
- c2.add (Calendar.DAY_OF_YEAR, nDiffDays);
- return c2;
- }
- public HolidayCalc (int nYear)
- {
- if (nYear <= 1583)
- throw new IllegalArgumentException ("Das Jahr muss > als 1583 sein!");
- m_nYear = nYear;
- // Add fixed holidays
- _addHoliday (1, 1, "Neujahr");
- _addHoliday (6, 1, "Heilige 3 Könige");
- _addHoliday (1, 5, "Tag der Arbeit");
- _addHoliday (15, 8, "Maria Himmelfahrt");
- // _addHoliday (3, 10, "Tag der deutschen Einheit");
- _addHoliday (26, 10, "Nationalfeiertag");
- // _addHoliday (31, 10, "Reformationstag");
- _addHoliday (1, 11, "Allerheiligen");
- _addHoliday (8, 12, "Maria Empfängnis");
- _addHoliday (24, 12, "Heiligabend");
- _addHoliday (25, 12, "Christtag");
- _addHoliday (26, 12, "Stefanitag");
- _addHoliday (31, 12, "Silvester");
- // Add holidays relative to easter sunday
- final Calendar aEaster = _getEasterSunday ();
- _addHoliday (aEaster, "Ostersonntag");
- // _addHoliday (_addDays (aEaster, -2), "Karfreitag");
- _addHoliday (_addDays (aEaster, 1), "Ostermontag");
- _addHoliday (_addDays (aEaster, 39), "Christi Himmelfahrt");
- _addHoliday (_addDays (aEaster, 49), "Pfingstsonntag");
- _addHoliday (_addDays (aEaster, 50), "Pfingstmontag");
- _addHoliday (_addDays (aEaster, 60), "Fronleichnam");
- if (false)
- {
- // Gets 3rd Wednesday in November
- final Calendar aBBDay = new GregorianCalendar (m_nYear, 11 - 1, 1);
- _addHoliday (_addDays (aBBDay, ( (11 - aBBDay.get (Calendar.DAY_OF_WEEK)) % 7) + 14),
- "Buß- und Bettag");
- }
- }
- private String _getWeekdayName (int i)
- {
- switch (i)
- {
- case Calendar.MONDAY:
- return "Mo";
- case Calendar.TUESDAY:
- return "Di";
- case Calendar.WEDNESDAY:
- return "Mi";
- case Calendar.THURSDAY:
- return "Do";
- case Calendar.FRIDAY:
- return "Fr";
- case Calendar.SATURDAY:
- return "Sa";
- case Calendar.SUNDAY:
- return "So";
- default:
- return Integer.toString (i);
- }
- }
- /**
- * Dummy
- */
- void print ()
- {
- Iterator<Calendar> it = m_aHolidays.keySet ().iterator ();
- while (it.hasNext ())
- {
- Calendar c = it.next ();
- String sWhat = m_aHolidays.get (c);
- String sCal = _getWeekdayName (c.get (Calendar.DAY_OF_WEEK)) + ' '
- + c.get (Calendar.DAY_OF_MONTH) + '.' + (1 + c.get (Calendar.MONTH)) + '.'
- + c.get (Calendar.YEAR);
- System.out.println (sCal + ": " + sWhat);
- }
- }
- /**
- * Dummy
- */
- public static void main (String [] args)
- {
- HolidayCalc hc = new HolidayCalc (2006);
- hc.print ();
- }
- }
so nun ist das ja ungefähr die selbe Aufgabe blos das es da nach den österreichischen Feiertagen geht soweit ich das verstanden habe....
Nun meine Frage seh ich das richtig um bei meinem Fall eine switch Anweißung zu realisieren müsste ich erst eine Calender.jar oder ähnliches Importieren oder hat jemand eine bessere idee wie ich
die switch Anweiweißung realisiere ???
Ps: auch eine Erklärung des quellcodes (der mit der switch Anweißung also letzterer) wäre sehr nett ... falls denn da noch jemand genau durchblickt
Danke schonmal im Vorraus