Java:将秒输入转换为小时/分钟/秒

时间:2016-03-27 11:04:10

标签: java math

这是一个来自刘易斯& amp;的 Java软件解决方案:程序设计的基础的练习题。洛夫特斯,第4版;问题PP2.6(这是一个link

问题如下:“创建一个项目,读取表示秒数的值,然后打印等量的时间作为组合 小时,分钟和秒。 (例如,9999秒是等效的 到2小时46分39秒。)“

我到目前为止尝试了以下

public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);

    double totalSecs, seconds, minutes, hours;

    System.out.println("Enter number of seconds: ");

    totalSecs = scan.nextInt();

    hours = totalSecs/3600;
    minutes = (Math.abs(Math.round(hours)-hours))*60;
    seconds = (Math.abs(Math.round(minutes)-minutes))*60;

    System.out.print(hours + "\n" + minutes + "\n" + seconds);

}

答案出来了, 小时:2.7775 分钟:13.350000000000009 秒:21.00000000000051

我想要做的是取小时数,例如小时数,然后乘以60得到分钟,然后重复几秒钟。然而,我无法搞清楚,因此(Math.abs)等的混乱解决方案

您建议我更改/添加什么?谢谢!

注意:这是一本适合初学者的书,因此我没有学到比我在代码中已经说过的更多的操作。因此,我还没有理解前一次提出这个问题的解决方案。

2 个答案:

答案 0 :(得分:3)

作为user2004685答案的替代方案;

int seconds = 9999; 
int hour = 9999 / (60 * 60); //int variables holds only integer so hour will be 2
seconds = 9999 % (60 * 60); // use modulo to take seconds without hours so it will be 2799
int minute = seconds / 60; //same as int variable so minute will be 49
seconds = seconds % 60; // modulo again to take only seconds
System.out.println(hour + ":" + minute + ":" + seconds);

答案 1 :(得分:2)

这是一种更简单的方法:

public static void main (String[] args) throws Exception {
    SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
    TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
    System.out.println(sf.format(new Date(9999000)));
}

注意:请注意,这只会以24小时格式显示输出,如果小时数大于24,则会增加一天并重新开始。例如,30小时将显示为06:xx:xx。此外,您必须以毫秒而不是秒来传递输入。

如果你想按自己的方式去做,那么你应该做这样的事情:

public static void main (String[] args) throws Exception {
    long input = 9999;
    long hours = (input - input%3600)/3600;
    long minutes = (input%3600 - input%3600%60)/60;
    long seconds = input%3600%60;
    System.out.println("Hours: " + hours + " Minutes: " + minutes + " Seconds: " + seconds);
}

输出:

Hours: 2 Minutes: 46 Seconds: 39