2014-12-07 85 views
-1

试图找出一天中过去的时间百分比。我不知道我在做什么错,但编译和执行代码只是给我0.0,我不知道我做错了什么。已过去时间的百分比(Java)

class Time { 
public static void main(String[] args) { 
    // variable assignments apply to the time when I started 
    // writing program 
    int hour, minute, second; 
    hour = 11; 
    minute = 8; 
    second = 14; 

    int hoursToMinutes = hour * 60; 
    int minutesToSeconds = (hoursToMinutes + minute) * 60; 
    int secondsElapsed = minutesToSeconds; 
    System.out.println(secondsElapsed + " seconds have elapsed."); 

    int secondsPerDay = 24 * 60 * 60; 
    double percentageOfDayElapsed = secondsElapsed/secondsPerDay; 
    System.out.println(secondsPerDay); 
    System.out.println(percentageOfDayElapsed + "% of the day has elapsed."); 
    } 
} 
+2

INT除法代替浮点。 – 2014-12-07 16:21:22

+0

我没有看过你的所有代码,但我看到你用int分开,试试double percentOfDayElapsed =(double)secondsElapsed /(double)secondsPerDay; – TungstenX 2014-12-07 16:22:39

回答

2

secondsElapsed/secondsPerDay正在执行整数除法,这意味着没有小数将永远不会回来了。如果你想使用部门与小数,你可以投其中一个操作数为double

double percentageOfDayElapsed = (double) secondsElapsed/secondsPerDay; 

而且,因为这应该是一个百分比,我希望它由一百乘以:

double percentageOfDayElapsed = ((double) secondsElapsed/secondsPerDay) * 100; 

另一件事:second变量从未使用。也许它应该被添加到secondsElapsed

int secondsElapsed = minutesToSeconds + second; 
0
int secondsElapsed = minutesToSeconds; 
int secondsPerDay = 24 * 60 * 60; 

你跳水两个整数!他们改为双打:

double secondsElapsed = minutesToSeconds; 
double secondsPerDay = 24 * 60 * 60; 

,然后做你的事业部:

double percentageOfDayElapsed = secondsElapsed/secondsPerDay; 
0

的问题是,你是一个整数除以整数。 它会给你一个小于1的数字。 由于它是一个整数,它将被截断为0.并且只有在它被转换为double之后。所以你想在分割之前将它转换成双精度。

变化分割线到:

double percentageOfDayElapsed = ((double)secondsElapsed/(double)secondsPerDay)*100;