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.
