Exercise "Turning seconds into weeks "





  • Ich habe das gleiche ergebniss mit:

    final int secondsElapsed = 1521175;

    final int weeks = secondsElapsed/60/60/24/7;
    final int days = secondsElapsed/60/60/24%7;
    final int hours = secondsElapsed/60/60%24;
    final int minutes = secondsElapsed/60%60;
    final int seconds = secondsElapsed%60;
    

    System.out.println(weeks + ", " + days + ", " + hours + ", " + minutes + ", " + seconds);
    rausgekriegt, ist das richtig so oder gibt es da probleme?



  • @Luft said in Exercise "Turning seconds into weeks ":

    Ich habe das gleiche ergebniss mit:

    final int secondsElapsed = 1521175;

    final int weeks = secondsElapsed/60/60/24/7;
    final int days = secondsElapsed/60/60/24%7;
    final int hours = secondsElapsed/60/60%24;
    final int minutes = secondsElapsed/60%60;
    final int seconds = secondsElapsed%60;
    

    System.out.println(weeks + ", " + days + ", " + hours + ", " + minutes + ", " + seconds);
    rausgekriegt, ist das richtig so oder gibt es da probleme?

    Ja, das habe ich auch so gemacht:

    public static void no46() {
            final int   secondsElapsed = 1521175,
                        weeks = secondsElapsed / 604800,
                        days = (secondsElapsed / 86400) % 7,
                        hours = (secondsElapsed / 3600) % 24,
                        minutes = (secondsElapsed / 60) % 60,
                        seconds = secondsElapsed % 60;
    
            System.out.println(weeks + ", " + days + ", " + hours + ", " + minutes + ", " + seconds);
        }
    

    Sollte klappen 👍



  • Klar, das Ergebnis ist gleich. Man könnte allerdings eine längere Rechenzeit vermuten:

    final int weeks = secondsElapsed/60/60/24/7;
    ...
    

    Dies sind immerhin vier Rechenperationen. Ich vermute allerdings, dass moderne Compiler dies in secondsElapsed/(60*60*24*7) umwandeln und das Produkt bereits zur Compile Zeit einmalig berechnen, so dass zur Laufzeit lediglich eine Operation verbleibt.

    Dies spielt insbesondere bei der Timeperiod Folgeaufgabe eine Rolle, weil diese Operationen dort ja mehrfach durchgeführt werden. Aus diesem Grund sind die Produkte dort vorab statisch definiert.


Log in to reply