Jahre, Monate, Tage, Stunden, Minuten

teufelsfrucht

Neues Mitglied
Stehe momentan auf dem Schlauch was ne Aufgabe angeht und wollte euch um Hilfe fragen.

Zu realisieren ist ein Programm, welches ausgehend von einem Anfangsdatum (z.B. 01.01.1970) mittels einer Methode vorruecke(int min, int h, int d, int m, int y) entsprechende Wert "draufaddieren" soll und letztenendes ein gültiges Ergebnis liefern soll. Schaltjahre werden dabei ignoriert, wir gehen davon aus das der Februar 28 Tage hat, etc.

Klasse Zeit.java

Java:
public class Zeit {

    public static int stunde = 0;
    public static int minute = 0;
    public static int tag = 1;
    public static int monat = 1;
    public static int jahr = 1970;

//gibt zureuck wie viele Tage ensprenden Monat hat
    public static int tageInMonat(int m) {
        if (m == 2) {
            return 28;
        }
        if ((m <= 7) && (m % 2 == 1)) {
            return 31;
        } else {
            if ((m >= 8) && (m % 2 == 0)) {
                return 30;
            }
        }
        return 0;
    }

    public static class Datum {
        public static int stunde() {
            return stunde;
        }

        public static void setStunde(int h) {
            stunde = h;
        }

        public static int minute() {
            return minute;
        }

        public static void setMinute(int mi) {
            minute = mi;
        }

        public static int tag() {
            return tag;
        }

        public static void setTag(int t) {
            tag = t;
        }

        public static int monat() {
            return monat;
        }

        public static void setMonat(int mo) {
            monat = mo;
        }

        public static int jahr() {
            return jahr;
        }

        public static void setJahr(int j) {
            jahr = j;
        }

        public static void vorruecken(int jahr, int monat, int tag, int stunde, int minute) {
          
            if((minute() + minute) <= 59){
                setMinute((minute() + minute));
            }
            if((minute() + minute) > 59){
                setMinute((minute() + minute) % 60);
                setStunde(stunde()+1);
            }
            if((stunde() + stunde) <= 24){
                setStunde(stunde() + stunde);
            }
            if((stunde() + stunde) > 24){
                setStunde((stunde() + stunde) % 24);
                setTag(tag()+1);
            }
            /*
            if((tag() + tag) <= 31){
                setTag(tag() + tag);
            }
            if((tag() + tag) > 31){
                setTag((tag() + tag) % 31);
                setMonat(monat() +1);
            }
          
            if((monat() + monat) <= 12){
                setMonat(monat() + monat);
            }
          
            if((monat() + monat) > 12){
                setMonat((monat() + monat) % 12);
                setJahr(jahr()+1);
            }
          
            setJahr(jahr() + jahr);
            }
        */
        }
    }
    }


TestZeit.java

Java:
public  class TestZeit {
    public static void main(String[] args) {
      
        // year, month, day, hour, min
      
        System.out.println("Minute(n):\t" + Zeit.minute);
        System.out.println("Stunde(n):\t" + Zeit.stunde);
        System.out.println("Tag(e): \t" + Zeit.tag);
        System.out.println("Monat(e):\t" + Zeit.monat);
        System.out.println("Jahr(e):\t" + Zeit.jahr);
      
        Zeit.Datum.vorruecken(5, 4, 4, 0, 59);
      
        System.out.println("\nMinute(n):\t" + Zeit.minute);
        System.out.println("Stunde(n):\t" + Zeit.stunde);
        System.out.println("Tag(e): \t" + Zeit.tag);
        System.out.println("Monat(e):\t" + Zeit.monat);
        System.out.println("Jahr(e):\t" + Zeit.jahr);
    }
}

Glaube das ich auf dem richtigen Weg bin, jedoch komme ich nach meinem jetzigen Verständnis auf keinen grünen Zweig.

Würde mich über Antworten freuen!

Gruß teufelsfrucht
 
Zuletzt bearbeitet von einem Moderator:
Das ist ja klar das das nicht funktionieren kann.

Angenommen eine Minute vor Neujahr wird das vorrücken mit 3 Minuten aufgerufen, dann ändern sich Minute, Stunde, Tag, Monat und Jahr!

Das bildet der Code so nicht ab.

Schritt eins ist erstmal den Ganzen Bullshit löschen.
Also alles static ausser das der main-Methode löschen!
Als nächstes die setMethoden löschen!
Dann den kompletten Inhalt von vorrücken(...) entfernen.

So jetzt legen wir Vernünftige Methoden an und nicht den setBullshit!

Java:
public void incrementMinute(int minute) {
  int newMinutes = this.minute + minute;
  if(newMinutes > 59) {
    incrementHour(newMinute / 60);
  }
  this.minute = newMinute % 60;
}

public void incrementHour(int hour) {
  int newHour = this.hour + hour;
  if(newHour > 23) {
    incrementDay(newHour / 24);
  }
  this.hour = newHour % 24;
}

Muster ist erkennbar? Tage Monate Jahre sollten wohl selbständig möglich sein, ansonsten ist wohl eher Kühe melken angesagt.

Code:
vorrücken(...blablabla...) {
  incrementMinute(minute);
  incrementHour(hour);
  incrementDay(day);
  //  ... Muster erkennbar?
}

Ansonsten gibbet ja noch massig Lektüre die man Durchwälzen kann, bevor man dann losprogrammiert.
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben