Tag der Woche -, java -, und Zeller ' s congruence!
Ich bin dabei die Programmierung übung aus dem lehrbuch, wo wir eine Algorithmus zur Berechnung der Tag der Woche aufgerufen Zeller ' s congruence. Gut denkst du ich kann die gleiche Ausgabe wie das Beispiel ausgeführt in dem lehrbuch! Sie gehen mit Jahr 2002, Monat 3 und Tag des Monats 26. Die Probe liest sich wieder am Dienstag. Ich habe mehrere Stunden von mods und schreibt und nicht überall zu bekommen in der Nähe von Dienstag!
Es ist Seite 133 von Java Umfassende lehrbuch 8e, ob jemand hat es... ich bin ein Anfänger so ein konstruktives feedback most welcome!
Ihren Rat würde geschätzt werden:
import java.util.Scanner;
public class DayOfTheWeek {
public static void main(String[] args) {
//Set up the scanner...
Scanner input = new Scanner(System.in);
//Set up the day's of the week with 0 being Sat as per algorithm.
final String[] DAY_OF_WEEK = {"Saturday", "Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday"};
//Get the year
System.out.print("Enter the year (e.g., 2002): ");
int year = input.nextInt();
//Get the month
System.out.print("Enter the month 1-12: ");
int month = input.nextInt();
//Get the day
System.out.print("Enter the day 1-31: ");
int day = input.nextInt();
//According to the algorithm Jan is 13 & Feb 14...
if (month == 1) month = 13;
else if (month == 2) month = 14;
//j Is the century.
int j = year / 100;
//k Is the year of the century.
int k = year % 100 ;
//Calculate
double h = (month + ((26*(month + 1)) / 10) + k + (k / 4) +
(j / 4) + (5 * j)) % 7;
//Cast answer back to integer to get result from array
int ans = (int)h;
//Print result
System.out.println("Day of the week is: " + DAY_OF_WEEK[ans]);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie dieser code-Zeile ist falsch:
Die Formel hat die Tag Hinzugefügt, um den ersten Ausdruck, nicht die Monat. Also es sollte wie folgt Aussehen:
Zeller ' s Congruence erfordert INTEGER math, um richtig zu funktionieren. Hier ist der code in C/C++ (was getestet wurde gegen den PHP-Tag der Woche-Funktion für JEDEN Tag-von Jahr 0 zu Jahr 10.000). Alle Variablen sind vom Typ int:
Beachten Sie die "- 1" in der Nähe des Ende der Funktion - dies bewirkt, dass es für die Rückgabe eines Wertes von 0 bis 6 statt 1 bis 7, um den Wert einfacher zu verwenden, z.B. als index in ein string-array mit den Tag-Namen.
ist FALSCH . Beachten Sie, dass Sie das nicht mit Tagen, die in Ihrer aktuellen Umsetzung.
Dies kann funktionieren, ich habe keine Ahnung, dass Buch u können versuchen, diesen code