到目前为止,这是我的代码。我是初学者,我不明白为什么这不能正常工作。
我的任务是花费几分钟(2000到40000),并输出它所构成的天数,小时数和分钟数(例如25000分钟--17天8小时40分钟)。
此外,它应该显示如果我添加17天8小时40分钟到2015年9月1日的日期:我甚至不接近输出(我的显示0天,6小时,50分钟) -
它必须如下所示:
在25000分钟内有17天,8小时40分钟。未来 日期将于2015年9月18日。
有什么建议吗?
public static void main(String[] args) {
// 1 minute = 60 seconds
// 1 hour = 60 x 60 = 3600
// 1 day = 3600 x 24 = 86400
int input = 25000;
int numberOfDays;
int numberOfHours;
int numberOfMinutes;
numberOfDays = input / 86400;
numberOfHours = (input % 86400) / 3600;
numberOfMinutes = ((input % 86400) % 3600) / 60;
System.out.println("Number of days :" + numberOfDays);
System.out.println("Number of Hours :" + numberOfHours);
System.out.println("Number of Mins :" + numberOfMinutes);
}
答案 0 :(得分:2)
像Chris K所说:
final static int ONE_DAY_IN_MINUTES = 1440;
但你犯了另外两个错误:
numberOfHours = (input % ONE_DAY_IN_MINUTES) / 3600;
为什么你会除以3600?
我们举一个例子:
我们输入1500
(代表1 day : 1 hour : 0 minutes
)
= (1500 % 1440)
= 60
我们知道其余的是60分钟,从分钟获得一小时的公式是:
minutes / 60
在这种情况下,60/60 = 1,所以正确的代码是:
numberOfHours = (input % ONE_DAY_IN_MINUTES) / 60;
以下相同的逻辑:
numberOfMinutes = ((input % ONE_DAY_IN_MINUTES) % 60) / 60;
为什么在用模数获得的其余部分已经给你分钟时,你会再次除以60?
numberOfMinutes = (input % ONE_DAY_IN_MINUTES) % 60;
答案 1 :(得分:1)
从您的代码编辑..
public static void main(String[] args) {
int input = 25000; //25000 mins
int numberOfDays = input / (60 * 24);
int numberOfHours = input % (60 * 24);
int numberOfMinutes = input % 60
System.out.println("Number of days :" + numberOfDays);
System.out.println("Number of Hours :" + numberOfHours);
System.out.println("Number of Mins :" + numberOfMinutes);
}
由于您总是添加到1st September 2015
,因此无需处理额外的分钟和秒数。只需将numberOfDays
添加到01(第1个月)。
<强>解释强>
答案 2 :(得分:0)
你的常数60,3600和86400是分钟,小时和天中秒的数量,因此你的程序计算相当于25000 秒的天,小时和分钟。您可以使用1,60和24 * 60代替它,它将计算相当于25000分钟的时间。