Datumerweiterung

nuke87

Mitglied
Hallo Leute,
ich muss ein Programm erstellen das Folgendes leistet:
z.B. Bei Eingabe 2015 10 7 16 30 30 muss als Ausgabe 2015 10 7 17 0 erscheinen,
weil 30 Minuten nach 16:30 am 7.10.2015 ist: 17:00 am 7.10.2015.
Mein Code macht das aber nicht sondern gibt das Gleiche wieder aus. Also bezogen auf den oberen Beispiel addiert er die 30 Minuten nicht .
Eigentlich sieht der Code fuer mich richtig aus , vielleicht habe ich was uebersehen.

Java:
import java.util.Scanner;

public class DatumErweiterung {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int year, month, day, hour, minute, add;

        year = sc.nextInt();
        month = sc.nextInt();
        day = sc.nextInt();
        hour = sc.nextInt();
        minute = sc.nextInt();
        add = sc.nextInt();

        if ((minute + add) > 60)
        {
            minute = (minute + add) % 60;
            hour++;
        }
        if (hour > 23)
        {
            hour = hour % 24;
            day++;
        }
        switch (month)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if (day > 31)
                {
                    day = day % 31;
                    month++;
                }
                break;
            case 2:
                if (day > 28)
                {
                    day = day % 28;
                    month++;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                if (day > 30)
                {
                    day = day % 30;
                    month++;
                }
                break;
        }
        if (month > 12)
        {
            month = month % 12;
            year++;
        }

        System.out.println(year + " " + month + " " + day + " " + hour + " " + minute);

        sc.close();
    }

}
 

Thallius

Top Contributor
Du hast wunderbar alle Fälle angefangen, nur nicht en Fall, dass eben einfach die Minuten sich um 30 erhöhen.

Gruß

Claus
 

nuke87

Mitglied
Ok Danke, Habe die Zeile
Java:
if ((minute + add)<60)
            minute = (minute + add);
hinzugefuegt und diese Zeile veraendert
Java:
if ((minute + add) >= 60)

und es funktioniert
 

InfectedBytes

Top Contributor
anstatt das mit zwei abfragen zu lösen, wäre es vermutlich einfacher es mit einer zu machen:
Java:
minuten += add;
if(minuten >= 60) {
  minuten = minuten % 60;
// etc.
}

Oder sogar ganz ohne Vergleich:
Java:
minuten += add;
stunden += minuten / 60;
// ...
// dann noch modulo
minuten %= 60;
// ...
 

nuke87

Mitglied
irgendwie kriege ich das nicht hin,
sagen wir mal ich will diese beide Zeilen lassen
Java:
if ((minute + add) < 60){
            minute = (minute + add);
        }

        if ((minute + add)>=60){
            minute = (minute + add)%60;
            hour++;
}
irgend wie weiss ich nicht wie ich es mit dieser Zeile anfange soll stunden += minuten /60;
Also mir ist nicht klar wie ich es machen soll wenn die minuten die ich dazu addiere zum beispiel mehrere Stunden betragen, und das in der Ausgabe sich natuerlich auch die Stunden veraendern anstatt 15 min + 90 min 105 min aus zu geben.
 

InfectedBytes

Top Contributor
Bei minuten / 60 wird ein int durch einen anderen int dividiert, daher ist das Ergebnis auch ein int.
Wenn du nun z.b. 150 / 60 rechnest, ist das Ergebnis 2 und dies entspricht eben den zusätzlichen Stunden.
 

Neue Themen


Oben