计算并显示通过的时间百分比

问题描述 投票:0回答:3

我正在阅读ThinkJava版本6.1.0(最新版本)和第2章练习2.3,我停留在#5上,询问“计算并显示已经过去的那一天的百分比。在计算百分比时可能会遇到问题有整数,所以考虑使用浮点数。“

我试图获得百分比,但我没有得到正确的结果。

我已经完成了前4个问题。这是我到目前为止:

public class Date {

    public static void main(String[] args) {

        int hour = 13, minute = 58, second = 45;
        double percentage;
        double secondsSinceMidnight = second + (minute * 60) + (hour * 3600);
        double secondsRemainingInDay = (60-second) + ((60-1-minute)*60) + (24-1-hour)*3600;

        percentage = (secondsSinceMidnight * 100) / 60;

        System.out.println("Number of seconds since midnight:");
        System.out.println(secondsSinceMidnight);

        System.out.println("Number of seconds remaining in the day:");
        System.out.println(secondsRemainingInDay);

        System.out.println("Percentage of the day past:");
        System.out.println(percentage + "%");
    }
}

感谢您的帮助和支持!

java
3个回答
1
投票

请检查计算已经过去一天的百分比的公式。

    percentage = (secondsSinceMidnight * 100) / 60;

对我来说似乎不对。应该是这样的

    percentage =  100 * secondsSinceMidnight  / totalSecondsInDay;

totalSecondsInDay可以是secondsRemainingInDaysecondsSinceMidnight的总和


0
投票

我认为您的代码存在类型转换问题

在第3行交换int with double:

double hour = 13, minute = 58, second = 45;

或者常数有问题,用这种方式写数字:60.0而不是60


0
投票

这是一个硬编码时间的例子。这显然是在军事时间,所以记住这一点。

public class Time 
{
    public static void main(String[] args) {
        int startHour = 12;         //when you start editing program
        int startMinute = 00;
        int startSecond = 00;
        System.out.print("Number of seconds since midnight: ");
        startMinute = (startHour * 60 + startMinute );
        startSecond = (startMinute * 60 + startSecond);
        System.out.print(startSecond);
        System.out.println(" seconds");

        int secondInADay = 86400;    //number of seconds in a day   
        System.out.print ("Seconds remaining in the day: ");
        System.out.println (secondInADay - startSecond);

        System.out.print("Percent of the day that has passed: ");
        double startSeconds = 43200;    //number of seconds that have passed in a day at start of editing program
        System.out.println(startSeconds * 100 / 86400);

        int endHour = 16;               //time when finished editing program
        int endMinute = 00;
        int endSecond = 00;

        System.out.print ("Difference = ");     //difference in time from start to finish
        endMinute = (endHour * 60 + endMinute );
        endSecond = (endMinute * 60 + endSecond);
        System.out.print (endSecond - startSecond);
        System.out.print (" seconds");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.