Java:关于代码的建议

时间:2015-10-17 15:14:07

标签: java

到目前为止,这是我的代码。我是初学者,我不明白为什么这不能正常工作。

我的任务是花费几分钟(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);
}

3 个答案:

答案 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个月)。

<强>解释

  • numberOfDays =给定分钟除以 24小时(以分钟为单位)
  • numberOfHours =给定分钟 mod 24小时(以分钟为单位)
  • numberOfMinutes =给定分钟 mod 1小时(以分钟为单位)

答案 2 :(得分:0)

你的常数60,3600和86400是分钟,小时和天中的数量,因此你的程序计算相当于25000 秒的天,小时和分钟。您可以使用1,60和24 * 60代替它,它将计算相当于25000分钟的时间。