maximale Anzahl der Tage im Monat

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
G

Gast2

Gast
Hallöle!

Wie bekomme ich die maximale Anzahl der Tage pro Monat heraus?
Besonders interessant ist das natürlich bei dem Februar.

Ich habe mich mit den Calender-Funktionen schon etwas beschäftigt,
aber bin dabei nicht zum Ziel gekommen.

Auch folgender (und ähnliche) Quelltext führte mich nicht zum Ziel:
Java:
Calendar cal = Calendar.getInstance();
System.out.println(cal.getActualMaximum(1)); // 1 für Februar, nullterminiert

Weiß jemand was dazu?

LG! Frank
 
Java:
Calendar cal = new GregorianCalendar();
        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
        System.out.println(cal.getActualMaximum(Calendar.DATE)); //das ist jetzt 2011
        cal.set(Calendar.YEAR, 2012);
        System.out.println(cal.getActualMaximum(Calendar.DATE)); //das ist jetzt 2012, ein schaltjahr..

public int getActualMaximum(int field) {

field nicht month... Calendar ist eine furchtbare Klasse...
 
Was fehlt dir... die main oder die imports?

Java:
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Test {

    public static void main(String[] args) {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
        System.out.println(cal.getActualMaximum(Calendar.DATE));
    }
}
 
meine definitive Aufgabenstellung lautet:

Schreiben Sie ein Java-Programm, welches für einen gegebenen Monat die Anzahl seiner Tage
anzeigt. Der Monat soll durch Eingabe des Jahres und der Monatsangabe – von 1 (Januar) bis 12
(Dezember) – spezifiziert werden. Berücksichtigen Sie Schaltjahre (siehe Aufgabe 1c).
Das Programm soll dem Nutzer die Möglichkeit geben, eine weitere Berechnung durchzuführen oder
das Programm zu beenden.
 
Java:
    public static void main(String[] args) {
        System.out.println(getLastDayOfMonth(2010, 2));
        System.out.println(getLastDayOfMonth(2011, 2));
        System.out.println(getLastDayOfMonth(2012, 2));
    }


    private static int getLastDayOfMonth(int year, int month) {
        int februar = 1/(month%2*2 + month/2) * (2 - 1/(year%4+1) + 1/(year%100+1) - 1/(year%400+1));

        return 30 + month/8 + month%2 - (month/8 * month%2 * 2) - februar;
    }
mathe. calendar-frei

ne while schleife und nen scanenr in main einzubaun solltest du ja hinbekommen, wenn nicht, code zeigen, der fehler wirft
 
Zuletzt bearbeitet von einem Moderator:
wie wird die while schleife eingebaut?


Scanner so deklarieren?

Scanner in = new Scanner(System.in);

System.out.println("Eingabe des Monats ");
Februar = in.nextInt();
 
laut deiner aufgabenstellung brauchst du 2 eingaben und nicht einmal ne schleife, war vorgegriffen.

in der main lässt du monat und jahr eingeben, dann rufts du mit den 2 ints, meine methode von oben auf und bekommst die monatstage zurück

mein code war kein vollständiges programm, guck dir mal die grund grundlagen an...
 
Java:
import java.util.Scanner;
public class Test {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int month; 
int year;
        System.out.println(getLastDayOfMonth(2010, 2));
        System.out.println(getLastDayOfMonth(2011, 2));
        System.out.println(getLastDayOfMonth(2012, 2));
    }
 
 
    private static int getLastDayOfMonth(int year, int month) {
        int februar = 1/(month%2*2 + month/2) * (2 - 1/(year%4+1) + 1/(year%100+1) - 1/(year%400+1));
 
        return 30 + month/8 + month%2 - (month/8 * month%2 * 2) - februar;
    }


ist das so gemeint?
 
Java:
import java.util.Scanner;
public class Test {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int month; 
int year;

System.out.println("Eingabe des Monats ");
    month = in.nextInt();
    System.out.println("Eingabe des Jahr ");
    year = in.nextInt();
    
    int getLastDayOfMonth; 
    
        System.out.println(getLastDayOfMonth(2010, 2));
        System.out.println(getLastDayOfMonth(2011, 2));
        System.out.println(getLastDayOfMonth(2012, 2));
    }
 
 
    private static int getLastDayOfMonth(int year, int month) {
        int februar = 1/(month%2*2 + month/2) * (2 - 1/(year%4+1) + 1/(year%100+1) - 1/(year%400+1));
 
        return 30 + month/8 + month%2 - (month/8 * month%2 * 2) - februar;
    }


ich hatte noch was vergessen
 
Kapitel 28 — Methodenaufruf mit Parametern ...

Java:
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int month;
        int year;

        System.out.println("Eingabe des Monats ");
        month = in.nextInt();
        System.out.println("Eingabe des Jahr ");
        year = in.nextInt();


        System.out.println(getLastDayOfMonth(year, month));
    }
 
Kann ich die restlichen Monate mit einer if Bdeingung aufrufen?

Java:
if (month == 1) {
        
        System.out.println("31 Tage");
 }
 
restliche monate? hä?

Java:
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Eingabe des Jahr ");
        int year = in.nextInt();

        for (int month = 1; month <= 12; month++) {
            System.out.println(getLastDayOfMonth(year, month) + " Tage");    
        }
    }
 

Zurück
Oben