我的Java程序中的逻辑错误

时间:2013-12-24 04:30:21

标签: java

我只是在慢慢学习Java,我在其中一个练习中遇到了问题。该程序将用户输入任意分钟数(我使用示例1000000000),程序将找到剩余的总年数和天数。出于某种原因,我能够在19岁时得到正确的年数,但我在最后一个陈述中的逻辑是不对的,我没有得到214天。

以下是我的程序代码,如果您能让我理解为什么我没有看到正确的答案,请告诉我。此外,我不知道这本书是否错了,但它显示的实际年数是1902年,但只有10亿分钟才能获得1902年。这也是一个混乱。感谢所有的回复。

import java.util.Scanner;

public class NumberOFYears 
{
    public static void main(String[] args) 
    {
        //Create a Scanner object
        Scanner input = new Scanner(System.in);

        //Prompt user for input
        System.out.print("Please enter number of minutes:");
        int totalMinutes = input.nextInt();

        //Find the number of hours
        int totalHours = totalMinutes / 60;

        //Find the number of days
        int totalDays = totalHours / 24;

        //Find the number of years
        int totalYears = totalDays / 365;

        //Find the number of days left 
        int remainingDays = totalHours % 24;
        System.out.println(remainingDays);

    }
}

3 个答案:

答案 0 :(得分:4)

您正在计算剩余天数,因此请使用:

int remainingDays = totalDays % 365;

答案 1 :(得分:3)

了解完整年数后,您可以将剩余天数计算为

remainingDays = totalDays - 365 * totalYears;

您也可以使用模运算符。当然,你的简单代码忽略了闰年......

顺便提一下,1,000,000,000 / (60 * 24 * 365)确实是1902

1,000,000,000 / (60 * 24) - 365 * 1902 = 214

答案 2 :(得分:2)

您可能想要使用

int remainingDays = totalDays%365;

代替。 %是模数运算符,它返回小于右操作数的余数