Java :: Aufgabe #2
21 Lösungen
Jahr auf Schaltjahr überprüfen
Anfänger - Java
von Gustl
- 06.08.2012 um 23:26 Uhr
Schreiben Sie eine Methode, welche überprüft ob das übergebene Jahr (
Rückgabewert ist ein
Testen Sie die Methode!
Methodenrumpf:
Java-Code
int) ein schaltjahr ist oder nicht. Rückgabewert ist ein
boolean-Wert (true oder false)Testen Sie die Methode!
Methodenrumpf:
public static boolean isSchaltjahr(int year) {
}
Lösungen:
public boolean istSchaltjahr(int jahr)
{
if(jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0)
{
return true;
}
return false;
}public class Schaltjahr {
public static boolean isSchaltjahr ( int year ) {
if ( year % 400 == 0 )
return true ;
if ( ( year % 4 == 0 ) && ( ! ( year % 100 == 0 )))
return true ;
return false ;
}
public static void main( String[] args ) {
if ( args.length != 1 ) {
System.out.println( "Error! Call java Schaltjahr <Jahreszahl>!" ) ;
System.exit( 1 ) ;
}
else {
int year = Integer.parseInt( args[ 0 ] ) ;
if ( year < 1 ) {
System.out.println( "Jahr muss >= 1 sein!" ) ;
System.exit( 2 ) ;
}
else {
System.out.print( "Das Jahr " + year + " war " ) ;
System.out.print( isSchaltjahr( year ) ?"ein" : "kein" ) ;
System.out.println( " Schaltjahr!" ) ;
}
}
}}
public static boolean isSchaltjahr(int year) {
if (year % 4 == 0)
return true;
return false;
}
public static boolean isSchaltjahr(int year) {
return new GregorianCalendar().isLeapYear(jahr);
} public static Boolean isLeapYear(int i) {
if ( (i%400)==0 || ( (i%4==0) && ((i%100) != 0) ) ) {
return true;
} else {
return false;
}
}Zitat:
Ein Schaltjahr ist, wenn
Die Jahreszahl durch 4 teilbar ist.
Ausnahme 1: Ist die Jahreszahl durch 100 teilbar ist i.d.R. KEIN Schaltjahr.
Ausnahme 2: Ist die Jahreszahl durch 400 teilbar ist IMMER ein Schaltjahr.
public static boolean isSchaltjahr(int year) {
if((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))){
return true;
}else return false;
}//©2012 by Julius J. Hoffmann
//written with Eclipse
import java.util.*; //Importiert Scanner zum Einlesen der Eingabe
public class Schaltjahr { //Die "ausführende Klasse"
public static boolean isSchaltjahr(int year) //Die Methode zur Überprüfung, vom typ boolean
{
if (year%4 == 0 && (year%100 != 0 || year%400 == 0)) //Kontrollabfrage mit booleschen Operatoren (s.u.)
return true; //Rückgabe WAHR, wenn die Regeln zutreffen, -> Methode endet HIER
return false; //Rückgabe FALSCH, else entfällt, da die Methode bei return autom. endet
} //Ende isSchaltjahr-Methode
//-------OPTIONAL:-----------------------------------------------------
public static void main(String[] args) //main-Methode
{
System.out.print("Bitte Jahr eingeben"); //Ausgabe des Strings
Scanner s = new Scanner(System.in); //legt das Scanner-Objekt an
int y = s.nextInt(); //liest die manuelle Eingabe ein und speichert sie in der Variablen y
if (isSchaltjahr(y)) System.out.print(y+" ist ein Schaltjahr"); //Abfrage, kein Vgl. nötig, da dieser auch nur dazu dient
//if einen true/false Wert zu übergeben, Ausgabe, wenn Schaltjahr
else System.out.print(y+" ist kein Schaltjahr"); //Ausgabe, wenn kein Schaltjahr
//Hier ist else nötig, da die Methode nach der Ausgabe weiterläuft und sonst beides anzeigen würde
} //Ende main-Methode
} //Ende Klasse
/**
Die verwendeten booleschen Operatoren:
- && -> Und, verbindet mehrere Bedingungen
- || -> Oder, es reicht wenn EINE der beiden Bedingungen zutrifft (im Gegensatz zu XOR!)
Weitere Operatoren:
a&b -> gibt den Rest zurück, so lässt sich mit einer 0-Abfrage kontrollieren ob a ein Teiler von b ist
*/ public static boolean istSchaltjahr(int jahr) {
return (jahr%4 == 0 && (jahr%100!= 0 || jahr%400 == 0));
}Ganz einfach :3
/**
* @author ElPapito
* @date 07.05.2015
*/
import java.util.Scanner;
public class JahrAufSchaltjahrPruefen {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte ein Jahr eingeben: ");
int year = scanner.nextInt();
scanner.close();
if (isSchaltjahr(year)) {
System.out.println("Schaltjahr!");
} else {
System.out.println("Kein Schaltjahr!");
}
}
public static boolean isSchaltjahr(int year) {
if (year % 400 == 0) {
return true;
} else if (year % 100 == 0) {
return false;
} else if (year % 4 == 0) {
return true;
} else {
return false;
}
}
}
public static boolean isSchaltjahr(int year) {
return (year % 4 == 0) && ((year % 400 == 0) || (year % 100 != 0));
}package java_helloworld;
import java.util.Scanner;
public class IsLeapYear {
/**
* Rules for the leap year:
* 1. x % 4 == 0
* 2. x % 100 != 0
* 3. x % 400 == 0
*/
private static boolean leapYear = false;
private static int year;
public static boolean isSchaltjahr(int year) {
if (year % 4 == 0)
leapYear = true;
if (year % 100 == 0)
leapYear = false;
if (year % 400 == 0)
leapYear = true;
return leapYear;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean error = true;
System.out.println("Schaltjahr");
System.out.println("Bitte gib das Jahr ein: ");
while (error) {
if (sc.hasNextInt())
year = sc.nextInt();
else {
System.out.println("Das ist keine Jahreszahl!");
System.out.println("Versuch es noch ein Mal: ");
sc.next();
continue;
}
error = false;
}
isSchaltjahr(year);
if (leapYear)
System.out.println("Das Jahr " + year + " ist ein Schaltjahr!");
else
System.out.println("Das Jahr " + year + " ist kein Schaltjahr!");
sc.close();
}
}
/* @Author H.K.
* @Date 21.02.2016
*
* Programmbeschreibung:
* Eingegebenes Jahr auf Schaltjahr überprüfen
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class mainprogram {
public static void main ( String args[] ) throws IOException
{
int jahr = 0;
while (jahr == 0)
{
System.out.print ( "Prüfe auf Schaltjahr, bitte das Jahr eingeben: " );
BufferedReader input = new BufferedReader ( new InputStreamReader ( System.in ) );
String inputString = input.readLine();
if (inputString.matches("-?\\d+?")) {
jahr = Integer.parseInt(inputString);
boolean schaltjahr = isSchaltjahr(jahr);
System.out.println(schaltjahr);
}
else {
System.out.println("Eingabe ist kein Jahr!");
}
}
}
public static boolean isSchaltjahr(int year) {
boolean isSchaltjahr = false;
isSchaltjahr = year%4 == 0 && (year%100 != 0 || year%400 == 0);
return isSchaltjahr;
}
}
Ausgabe wenn das Jahr ein Schaltjahr ist:
Konsolenausgabe:
Prüfe auf Schaltjahr, bitte das Jahr eingeben: 2004
true
Ausgabe wenn das Jahr kein Schaltjahr ist:
Konsolenausgabe:
Prüfe auf Schaltjahr, bitte das Jahr eingeben: 2005
false
Ausgabe bei falscher Eingabe:
Konsolenausgabe:
Prüfe auf Schaltjahr, bitte das Jahr eingeben: 200t
Eingabe ist kein Jahr!
Prüfe auf Schaltjahr, bitte das Jahr eingeben:
/*
* Max F. 07.04.2016
*
* Jedes 4. Jahr ist ein Schaltjahr
* Jedes 100. Jahr ist aber kein Schaltjahr
* Jedes 400. Jahr ist ein Schaltjahr
*/
public class Schaltjahr {
public static void main(String[] args) {
int aktuellesJahr;
aktuellesJahr=2016;
if (isSchaltjahr(aktuellesJahr)) //Prüfe mit Methode ob es ein Schaltjahr ist
System.out.println("Das Jahr "+aktuellesJahr+" ist ein Schaltjahr");
else
System.out.println("Das Jahr "+aktuellesJahr+" ist kein Schaltjahr");
}
public static boolean isSchaltjahr(int year) {
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//Math. Bestimmung eines Schaltjahres
return true;
else
return false;
}
}
public static boolean isSchaltjahr(int year)
{
if(year <= 0)
{
return false;
}
if(year % 400 == 0)
{
return true;
}
if(year % 100 == 0)
{
return false;
}
if(year % 4 == 0)
{
return true;
}
return false;
}
package de.exception.schaltjahr_2;
public class MyCalendar {
public static boolean isLeapyear(int year) {
/**
* Eine Lösung wäre mit der in der LocalDate Klasse verfügbaren isLeapYear(year) Methode auch möglich.
*/
return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));
}
}
package de.exception.schaltjahr_2;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class testLeapYear {
@Test
void test() {
assertEquals(true, MyCalendar.isLeapyear(2008));
assertEquals(true, MyCalendar.isLeapyear(2012));
assertEquals(true, MyCalendar.isLeapyear(2016));
assertEquals(true, MyCalendar.isLeapyear(2020));
assertEquals(false, MyCalendar.isLeapyear(2021));
assertEquals(false, MyCalendar.isLeapyear(2022));
assertEquals(false, MyCalendar.isLeapyear(2023));
assertEquals(true, MyCalendar.isLeapyear(2024));
}
}
public static boolean isSchaltjahr(int year) {
if (year%4==0){
return true;
}
}
Anmerkung: Ich arbeite mit dem Programm BlueJ
Java-Code
import javax.swing.JOptionPane;
/**
* Prüfen ob ein Jahr ein Schaltjahr ist.
*
* @author (nOrdan)
* @version (29.05.2019 18:12)
*/
public class Schaltjahr
{
/**
* Konstruktor für Objekte der Klasse Schaltjahr
*/
public Schaltjahr()
{
}
public void schaltjahrPruefen()
{
boolean valid = false; //Hilfsvariable für die While-Schleife
while (valid == false) //While-Schleife ,so dass der User nach falscher Eingabe erneut aufgefordert wird ein Jahr einzugeben
{
String input = JOptionPane.showInputDialog("Geben sie ihr Jahr ein, welches sie prüfen wollen"); //Eingabe des Users
try //Hiermit sollen keine Zahleneingaben abgefangen werden siehe beim ersten else
{
if (input == null)
{
System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet
}
else if (input.length() == 0)
{
continue; //Gibt der User nichts ein und drückt auf Ok wird die While-Schleife weiter fortgeführt bis der User etwas eingibt und auf Ok drückt
}
else
{
int jahr = Integer.parseInt(input); //Umwandlung des Inputs in einen int
valid = true; //Beenden der While-Schleife indem man die Hilfsvariable auf true setzt
if (istSchaltjahr(jahr) == true) //Ergebnisrückgabe ob das eingegebene Jahr ein Schaltjahr ist oder nicht
{
JOptionPane.showMessageDialog(null,"Das Jahr " + jahr + " ist ein Schaltjahr");
}
else
{
JOptionPane.showMessageDialog(null,"Das Jahr " + jahr + " ist kein Schaltjahr");
}
}
}
catch (Exception e) //Greift wenn keine Zahl vom User eingegeben wurde, danach erneute Abfrage des Users wegen der While-Schleife
{
JOptionPane.showMessageDialog(null,"Invalid Input", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
private boolean istSchaltjahr(int jahr)
{
if ((jahr % 4 == 0) && ((jahr % 100 != 0) || (jahr % 400 == 0))) //Prüfen ob Schaltjahr nach den Schaltjahrregeln
{
return true;
}
else
{
return false;
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String argsp[]) {
String userInput;
Scanner s = new Scanner(System.in);
System.out.println("Bitte das zu überprüfende Jahr eingeben:");
do {
userInput = String.valueOf(s.next());
if(tryParseInt(userInput)) {
int userNumber = Integer.parseInt(userInput);
isSchaltjahr(userNumber);
}
else {
System.out.println("Dies ist keine gültige Eingabe, bitte ein Jahr eingeben:");
}
} while(!tryParseInt(userInput));
}
static boolean isSchaltjahr(int year) {
if(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
System.out.println("Das Jahr " + year + " ist ein Schaltjahr");
return true;
}
else {
System.out.println("Das Jahr " + year + " ist kein Schaltjahr");
return false;
}
}
static boolean tryParseInt(String userInput) {
try {
Integer.parseInt(userInput);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}Fehlermeldung:
Dies ist keine gültige Eingabe, bitte ein Jahr eingeben:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Schaltjahr {
public static void main(String[] args) {
SchaltjahrPruefen schp = new SchaltjahrPruefen("Schaltjahr prüfen");
}
}
class SchaltjahrPruefen extends JFrame implements ActionListener {
JLabel lbl = new JLabel("Geben Sie das Jahr ein: ");
JTextField tfEingabe = new JTextField(10);
JTextField tfAusgabe = new JTextField(20);
JPanel pEingabe = new JPanel();
JPanel pAusgabe = new JPanel();
SchaltjahrPruefen(String titel) {
super(titel);
setVisible(true);
setSize(300, 300);
setLocationRelativeTo(null);
setLayout(new FlowLayout());
tfEingabe.addActionListener(this);
tfAusgabe.setEditable(false);
pEingabe.add(lbl);
pEingabe.add(tfEingabe);
pAusgabe.add(tfAusgabe);
add(pEingabe);
add(pAusgabe);
}
public static boolean isSchaltjahr(int jahr) {
if ((jahr % 4 == 0 && !(jahr % 100 == 0)) || (jahr % 400 == 0))
return true;
else
return false;
}
@Override
public void actionPerformed(ActionEvent evt) {
try {
int zahl = Integer.parseInt(tfEingabe.getText());
isSchaltjahr(zahl);
if (isSchaltjahr(zahl)) {
tfAusgabe.setText(tfEingabe.getText() + " ist Schaltjahr");
} else {
tfAusgabe.setText(tfEingabe.getText() + " ist kein Schaltjahr");
}
} catch (NumberFormatException e) {
tfAusgabe.setText("Bitte Ganzzahl eingeben!");
}
}
}
import java.util.Scanner;
public class JahrAufSchaltjahrUeberpruefen {
public static void main(String[] args) {
System.out.println(isSchaltjahr(new Scanner(System.in).nextInt()));
}
public static boolean isSchaltjahr(int year) {
if (year%4 == 0) {
if (year%100 == 0 && year%400 != 0) {
return false;
}
return true;
}
return false;
}
}/**
* Test, whether a given year (int) is a leap year.
* Use a method that returns a boolean.
*/
import java.util.Scanner;
class LeapYear {
static boolean isLeapYear(int year) {
if (year % 400 == 0) {
return true;
} else if ((year % 4 == 0) && !(year % 100 == 0)) {
return true;
} else {
return false;
}
// shorter possibility: return ((year % 400 == 0) || ((year % 4 == 0) && !(year % 100 == 0)));
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int year = 0;
boolean inputType = false;
while (!inputType) {
System.out.println("Please enter a year (integer):");
try {
year = scan.nextInt();
inputType = true;
} catch (Exception e) {
System.out.println("Error: Input is not an integer!");
scan.next();
}
}
scan.close();
if (isLeapYear(year)) {
System.out.println(year + " is a leap year.");
} else {
System.out.println(year + " is not a leap year.");
}
}
}Konsolenausgabe:
Please enter a year (integer):
sdfg
Error: Input is not an integer!
Please enter a year (integer):
456.
Error: Input is not an integer!
Please enter a year (integer):
1788
1788 is a leap year.
