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

这是一个来自Java软件解决方案的练习题 Lewis&Loftus 的程序设计基础 ,第4版; 问题PP2.6(这是一个链接 )

问题如下: “创建一个项目,读取表示秒数的值,然后打印等量的时间作为小时,分钟和秒的组合。(例如,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)等的混乱解决方案。

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

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

这是一种更简单的方法:

 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 

作为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);