Schaltjahr Berechnung

Status
Nicht offen für weitere Antworten.

Wusaa

Aktives Mitglied
Hallo,

habe folgende Aufgabe

Entwickeln Sie ein Programm, welches von einem gegebenen Jahr ermittelt, ob dieses ein Schaltjahr ist oder nicht.

Eingabe:
Beliebiges Jahr N ab 1583

Ausgabe:
N ist Schaltjahr oder N ist kein Schaltjahr

Ich komme blöder Weise nicht mal auf einen ansatz, weil das das erste programm ist das wir "selbst" programmieren sollen.
Könnte mir bitte jemand weiterhelfen?

MfG
 

Leroy42

Top Contributor
Code:
boolean istSchaltJahr = jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0)
 

DP

Top Contributor
Code:
int jahr = 2007;
System.out.println(new GregorianCalendar().isLeapYear(jahr));
 

Verjigorm

Top Contributor
Ansatz:

Schaltjahr alle 4 Jahre:

Code:
if (jahr % 4 == 0)
{...}
else
{...}

% <-- Modulo Operator (google hilft ;) )

Tipp: Nicht jedes "4. Jahr" ist ein Schaltjahr, es gibt da ne Ausnahme :)


edit: hapüh, ich war zu langsam :p
 

Leroy42

Top Contributor
Oder meinen bool'schen Ausdruck umgangssprachlich formuliert.

Ein Jahr ist genau dann ein Schaltjahr, wenn
die Jahreszahl durch 4 teilbar ist und dann entweder
nicht durch 100 teilbar ist oder sonst durch 400 teilbar ist.
 

Ariol

Top Contributor
mit modulo

jahr % 4 = 0 -> schaltjahr
jahr % 400 = 0 -> schaltjahr
aber:
jahr % 100 = 0 -> kein schaltjahr
 

Ariol

Top Contributor
geschachtelt wie dus gemacht hast:
Code:
public boolean istSchaltjahr(int jahr)
{
   if(jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0) return true;
   return false; 
}
 

Leroy42

Top Contributor
Bin gerade auf etwas merkwürdiges gestoßen.

Wieso funktioniert
Code:
		for (int j : new int[] {16, 17, 100, 400})
			System.out.printf("%d %s%n", j, j%4==0 && (j/4%25 != 0 || j/4/25%4 == 0));

aber nicht
Code:
		for (int j : new int[] {16, 17, 100, 400})
			System.out.printf("%d %s%n", j, j%4==0 && j/4%25 != 0 || j/4/25%4 == 0);
(ohne Klammerung des zweiten Teils)

Ich dachte immer && und || haben gleiche Präzedenz und müssen immer von
links nach rechts ausgewertet werden..

Was mache/denke ich falsch? :shock:
 

Leroy42

Top Contributor
Ariol hat gesagt.:
ja, aber durch die klammer wird zuerst das || und dann das && aufgelöst

Aha!

Die Auswertung erfolgt zwar nach Kurzschluß-Verfahren, aber die
Operatoren sind rechts-assoziativ.

Dann habe ich kurz vorm Wochende doch noch was gelernt :)
 

Ariol

Top Contributor
Leroy42 hat gesagt.:
Ariol hat gesagt.:
ja, aber durch die klammer wird zuerst das || und dann das && aufgelöst

Aha!

Die Auswertung erfolgt zwar nach Kurzschluß-Verfahren, aber die
Operatoren sind rechts-assoziativ.

Dann habe ich kurz vorm Wochende doch noch was gelernt :)

Hmm, wusst ich nicht....

Ich setz immer Klassen so wies sein muss, dann ists auch verständlicher


Hab rausgefunden worans liegt:

Wenn man Integer benutzt ergibt 17/4 = 4

Das ganze ist einfach nur ein Rundungsfehler!
also doch lieber:

Code:
for (int j : new int[] {16, 17, 100, 400})
System.out.printf("%d %s%n", j, j%4==0 && (j%100 != 0 || j%400 == 0));

oder
Code:
for (int j : new int[] {16, 17, 100, 400})
System.out.printf("%d %s%n", j, j%4==0 && j%100 != 0 || j%400 == 0);

benutzen
 

Leroy42

Top Contributor
Richtig!

Hat aber nichts mit Rundungsfehler zu tun

Ich wollte absichtlich das Vorwissen, daß
die Jahreszahl bereits durch 4 teilbar ist, verwenden.

Im übrigen sind die Operatoren natürlich rechts-assoziativ. :oops:

Menno! Bin ich heute blöd oder was: :oops:

Ich meinte links-assoziativ
 

Ariol

Top Contributor
ja, aber du kannst das Vorwissen nicht nutzen, wenn du das Vorwissen nicht hast.

du kannst natürlich auch double-Werte benutzen (geht das mit Modulo??). Dann gehts, aber auch wieder ohne Vorwissen.
 
G

Guest

Gast
wie lautet denn dann nun der komplette code, sodass ich ihn in eclipse kompilieren und ausführen kann?
 

Leroy42

Top Contributor
Na so wie Ariol ihn gepostet hat:
Code:
public boolean istSchaltjahr(int jahr) { 
   return jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0); 
}
 
G

Guest

Gast
wenn ich den code so eingebe und dann auf Run --> Java Applikation --> Main Class gehe, finde ich bei Main Class keine Class die ich nehmen kann?!
 
G

Guest

Gast
Run --> Run as

ist leer, da steht nix drin :roll:

und

Run --> Java Applikation
dann Name eingeben, und unten bei Main Class müsste ich ja was auswählen können, is aber nicht der fall :autsch:

???
 

Leroy42

Top Contributor
Als vollständiges Programm:


Code:
public class Test {
	public static boolean istSchaltjahr(int jahr) {
		return jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0);
	}
	public static void main(String[] args) { 
		for (int i : new int[]  {2000, 2100, 2007, 2008})
			System.out.printf("%d ist %sein Schaltjahr%n", i, istSchaltjahr(i) ? "" : "k");
	}
}
 
G

Guest

Gast
kannst du mir bitte mal die Zeile

Code:
System.out.printf("%d ist %sein Schaltjahr%n", i, istSchaltjahr(i) ? "" : "k");

erläutern, ich versteh das mit dem %d und %sein... bzw "k" nicht?!
 

schalentier

Gesperrter Benutzer
Code:
public class Test {
    public static boolean istSchaltjahr( int jahr ) {
        if( jahr%400 == 0 ) {
            // Jahr ist durch 400 teilbar --> Schaltjahr
            return true;
        } // no else
        if( jahr%4 == 0 ) {
            // Jahr ist durch 4 teilbar --> Schaltjahr
            if( jahr%100 == 0 ) {
                // aber nicht, wenn das jahr auch durch 100 teilbar ist
                return false;
            } else {
                return true;
            }
        } // no else 
        return false;
    }
    
    public static void main(String[] args) {
        int jahre[] = new int[]{ 1600, 1980, 1972, 1720, 1700, 1800 , 2000, 2100, 2007, 2008 };

        for( int jahr : jahre ) {
            if( istSchaltjahr( jahr ) ) {
                System.out.println(jahr + " ist ein Schaltjahr" );
            } else {
                System.out.println(jahr + " ist kein Schaltjahr" );
            }
        }
    }
}


Das tut das gleiche wie das andre Programm, nur fuer nen Anfaenger vielleicht etwas einfacher zu verstehen. ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
J Schaltjahr Java Basics - Anfänger-Themen 6
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
R Schaltjahr problem Java Basics - Anfänger-Themen 10
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
P Schaltjahr: "sauberer" Code Java Basics - Anfänger-Themen 4
C Schaltjahr Java Basics - Anfänger-Themen 4
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
B Schaltjahr überprüfen (Code) Java Basics - Anfänger-Themen 4
U Java Quellcode Schaltjahr Java Basics - Anfänger-Themen 13
G Schaltjahr Java Basics - Anfänger-Themen 6
W Schaltjahr abbrechen wenn <1583 Java Basics - Anfänger-Themen 11
S schaltjahr (gelöst zu 90 %), allerdings folgeprob :/ Java Basics - Anfänger-Themen 18
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben