Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben?

C

Cookiieee

Mitglied
Hallo

ich soll ein Programm schreiben, das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht.

Bitte Jahreszahl eingeben. 2000
oder
Bitte Jahreszahl eingeben. 2021


Ein Jahr sei ein Schaltjahr, wenn die Jahreszahl durch 400 teilbar ist. Oder wenn es durch 4, aber nicht durch 100 teilbar ist. Das Programm gibt aus, ob das eingegebene Jahr ein Schaltjahr ist. Zum Beispiel:

Das Jahr 2000 ist ein Schaltjahr.
oder
Das Jahr 2021 ist kein Schaltjahr.


Ich habe schon angefangen, weiß allerdings, ob das was ich gemacht habe richtig ist, weshalb ich mich für ein paar Tipps freuen würde und wo ich die Zahlen einsetzen soll.

Java:
public class LeapYear {
public static boolean schaltjahr(int jahr) {
  if (jahr % 4==0) {
      return true; }
      
  if (jahr % 4==0 && jahr % 100 !=0) (jahr % 400 ==0) {
      return true; }
      
      return false }
  }

Das soll dabei rauskommen:

Was wird getestet? Eingabe Resultat

LeapYear.main(null); 2000 Bitte Jahreszahl
eingeben. Das Jahr 2000
ist ein Schaltjahr.

LeapYear.main(null); 2020 Bitte Jahreszahl
eingeben. Das Jahr 2020
ist ein Schaltjahr.

LeapYear.main(null); 2021 Bitte Jahreszahl
eingeben. Das Jahr 2021
ist kein Schaltjahr.
 
L

LimDul

Top Contributor
Da stimmt so einiges nicht.
Punkt 1: Das kompiliert nicht. Zeile 6 ist in der Form nicht kompilierfähig.
Punkt 2: Es ist fachlich falsch Was gibt die Methode bei 1900 zurück? Geh es mal zeilenweise durch.
 
kneitzel

kneitzel

Top Contributor
Die Aussagen musst Du doch nur 1:1 übersetzen:

1) Wenn es durch 400 teilbar ist, dann ist es ein Schaltjahr. => Wie testet Du das in Java?

2) Wenn es durch 4 teilbar ist und nicht durch 100 ist dann als nächstes zu testen.

3) In allen anderen Fällen ist es kein Schaltjahr.

Zu 1) kannst Du Dir einfach einmal die erste Bedingung bei Deinem Code ansehen. Was macht der derzeit?

zu 2) Wie kannst Du in einem if zwei Bedingungen mit und verknüpfen? Dann die beiden Bedingungen ähnlich wie bei 1 entsprechend verknüpfen ...
 
S

Steven Hachel

Bekanntes Mitglied
Machs doch einfach so...

Schaltjahr ausgeben:
import java.time.MonthDay;
import java.time.YearMonth;
    int year = 2012;
    System.out.println( YearMonth.parse(String.format("%d-02", year) ).lengthOfMonth());
    System.out.println(MonthDay.parse("--02-29").isValidYear(year))

Steven
 
C

Cookiieee

Mitglied
Machs doch einfach so...

Schaltjahr ausgeben:
import java.time.MonthDay;
import java.time.YearMonth;
    int year = 2012;
    System.out.println( YearMonth.parse(String.format("%d-02", year) ).lengthOfMonth());
    System.out.println(MonthDay.parse("--02-29").isValidYear(year))

Steven
Danke dir erstmal!
Ich weiß ich muss oben noch die Sachen schreiben, aber ich bekomme trotzdem nichts aus diesem Programm raus oder muss ich das irgendwie bearbeiten?
 
kneitzel

kneitzel

Top Contributor
Also Sinn dieser Übung dürfte weniger das Nutzen irgendwelcher Klassen aus dem Java Framework als die einfache Umsetzung eines Algorithmus sein mit einfachen if Bedingungen.

Den gegebenen Code würde ich daher an Deiner Stelle erst einmal ignorieren.
 
C

Cookiieee

Mitglied
Also Sinn dieser Übung dürfte weniger das Nutzen irgendwelcher Klassen aus dem Java Framework als die einfache Umsetzung eines Algorithmus sein mit einfachen if Bedingungen.

Den gegebenen Code würde ich daher an Deiner Stelle erst einmal ignorieren.
Ich habe das Jetzt so, mir fehlen aber noch die Wörter "Das Jahr", da bei mir nur bspw. "2000 ist ein Schaltjahr" rauskommt und nicht: "Das Jahr 2000 ist ein Schaltjahr", hat da vielleicht jemand ein Tipp, wo ich das noch einfügen muss?

Java:
public class LeapYear {
            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[]{ 2000, 2020, 2021 };

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

temi

Top Contributor
Ich möchte noch anmerken, dass deine ursprüngliche Lösung aus dem ersten Beitrag fast richtig gewesen wäre und auch deutlich besser lesbar als deine aktuelle Lösung
Java:
    public static boolean schaltjahr(int jahr) {
        if (jahr % 400 == 0) { // hier 400 anstatt 4
            return true;
        }
   
        if (jahr % 4 == 0 && jahr % 100 != 0)  { // hier die zweite Klammer entfernen
            return true;
        }

        return false;
    }

Und hier noch die Angeberversion
Java:
    public static boolean schaltjahr(final int jahr) {
        return (jahr % 400 == 0) || (jahr % 4 == 0 && jahr % 100 != 0);
    }

Erklärung: Da die Auswertung in der if-Abfrage genau dem gewünschten Rückgabewert entspricht, kann man direkt das Ergebnis der Auswertung zurückgeben.
Java:
if (jahr % 400 == 0) {
    return true;
}

// bedeutet im Prinzip

if (true) { // wenn das Ergebnis der Bedingung wahr ist, dann gib wahr zurück
    return true;
}

// was diesem entspricht

return jahr % 400 == 0;

// Es fehlt nur noch die zweite Bedingung verknüpft mit einem ODER
 
Zuletzt bearbeitet:
C

Cookiieee

Mitglied
Danke dir erstmal für die Anmerkung!
Vielleicht jetzt eine etwas blöde Frage, aber wo müsste ich dann die Jahreszahl eingeben?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Eclipse: Programm startet nicht, wie Fehler feststellen? Java Basics - Anfänger-Themen 5
D Programm auf Enter warten lassen Java Basics - Anfänger-Themen 2
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
OSchriever Jar-Programm läuft auf Windows aber nicht auf Linux(Raspberri Pi4) Java Basics - Anfänger-Themen 22
G Programm Code Java Basics - Anfänger-Themen 5
UnknownInnocent Achsenskalierung in Koordinatensystem hängt Programm auf Java Basics - Anfänger-Themen 5
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
TimoN11 Mail Programm mit Java? Java Basics - Anfänger-Themen 1
Sajeel Chattha Dieses Programm umschreiben Java Basics - Anfänger-Themen 5
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
A Programm Histogram Java Basics - Anfänger-Themen 2
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
CT9288 Interaktion mit laufendem Programm -Fachbegriffe Java Basics - Anfänger-Themen 2
Gaudimagspam Assertions im Programm hinzufügen Java Basics - Anfänger-Themen 4
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
W Programm dass Palindrome erkennt Java Basics - Anfänger-Themen 6
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
J Programm schreiben Java Basics - Anfänger-Themen 5
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Programm Schleife/if Java Basics - Anfänger-Themen 2
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
G While/If Programm Java Basics - Anfänger-Themen 2
G Java-Programm Terminal Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
I Java Programm sieht wie exe aus. Java Basics - Anfänger-Themen 3
J Programm vereinfachen Java Basics - Anfänger-Themen 5
G Java-Programm weitergeben Java Basics - Anfänger-Themen 14
Kirby.exe Programm startet nachdem es compiled wurde nicht Java Basics - Anfänger-Themen 17
T Programm effizienter gestalten Java Basics - Anfänger-Themen 17
M Ein Programm erweitern, wie? Java Basics - Anfänger-Themen 3
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
G Dezimal zu Binärcode Programm Java Basics - Anfänger-Themen 9
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
M Problem mit meinem Programm Java Basics - Anfänger-Themen 6
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
R Compiler-Fehler HalloWelt-Programm korrekt abgeschrieben, trotzdem Fehlermeldungen Java Basics - Anfänger-Themen 2
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
A Java-Programm läuft bei installierter JDK aber nicht mit JRE? Java Basics - Anfänger-Themen 5
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
I Datei in Programm speichern Java Basics - Anfänger-Themen 3
H Programm compilieren Java Basics - Anfänger-Themen 10
W Java Programm mit API Anbindung Java Basics - Anfänger-Themen 2
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
K Programm ausführen Java Basics - Anfänger-Themen 2
X Java Programm MacOS Java Basics - Anfänger-Themen 1
O Programm verstehen :D Java Basics - Anfänger-Themen 4
A Programm in Konsole Java Basics - Anfänger-Themen 4
S Programm als Daemon ausfuehren - wie rufe ich es auf..? Java Basics - Anfänger-Themen 3
A Wie gebe ich bei android eine string im programm aus? Java Basics - Anfänger-Themen 4
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
F Array-Programm Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
V Vererbung Eclipse startet das Programm nicht und rechnet nicht Java Basics - Anfänger-Themen 6
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
N Verbesserungsvorschläge zu Wegfinder Programm Java Basics - Anfänger-Themen 26
D Warum gibt mir das Programm nicht den Array invertiert an ? Java Basics - Anfänger-Themen 1
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
B Tic Tac Toe - Programm Java Basics - Anfänger-Themen 2
N BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
T Woher nimmt das Programm die Variablenwerte???? Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
A Shopping Cart Programm. Verstehe einige Zusammenhänge nicht Java Basics - Anfänger-Themen 1
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
L Programm zur Codieren nach Rotx Java Basics - Anfänger-Themen 1
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
M Programm, das ein Wort einliest Java Basics - Anfänger-Themen 3
W Warum läuft mein Programm nicht? Java Basics - Anfänger-Themen 14
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
x-tshainge Schleife für ein Würfel Programm Java Basics - Anfänger-Themen 2
N Passwort Anfrage vor Programm start Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
B Programm erwartungswert Java Basics - Anfänger-Themen 16
F Java Programm schließen Java Basics - Anfänger-Themen 1
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B Mit Java anderes Java Programm starten Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben