如果Statement无法与double配合使用

时间:2018-07-12 01:22:34

标签: java

我是学习Java的初学者。我正在做一个练习,用户输入分钟数,然后打印出年数和天数。

我整理了一些if语句,以打印出年月日或天数,具体取决于用户输入的分钟数。

如果变量year是双精度数,则if语句无法工作(执行第一条语句)。一旦将其缩小到(int),它就可以正常工作。我用2880分钟进行了测试,因此year的值应该明显小于一,而第二个if else语句应执行。

对于为什么发生这种情况的任何帮助将不胜感激(我知道加倍并不完全准确,但是我的测试用例应该可以工作,因为多年的值应该远低于1)。谢谢!

import java.util.Scanner;

public class NumberOfYears {
    public static void main(String[] args) {
        //Set up Scanner object
        Scanner input = new Scanner(System.in);

        //Get the number of minutes from the user
        System.out.print("Enter the number of minutes: ");
        int minutes = input.nextInt();

        //Determine the amount days / years
        double days = minutes / 60.0 / 24;
        double years = days / 365.0;

        //Print out results
        if ( years > 0) {
            System.out.println(minutes + " minutes is approximately " + (int) years + " years and " + (int) days % 365
                    + " days.");
        } else if ( days > 0) {
            System.out.println(minutes + " minutes is approximately " + (int) days + " days.");
        } else {
            System.out.println(minutes + " minutes is less than one day.");
        }

    }
}

3 个答案:

答案 0 :(得分:0)

在if语句中,您写了if (years > 0)。应该是if (years > 1)。与您的if (days > 0)相同。就那么简单。 Java中的浮点数学或您的用法都没有错。

答案 1 :(得分:0)

我得到以下信息:

Enter the number of minutes: 2880
2880 minutes is approximately 0.005479452054794521 years and 2 days.

代码将年​​份转换为双精度

似乎可以正常工作

答案 2 :(得分:0)

我会说正确的方法是在几天和几年中都使用int类型。然后,使用整数除法(描述为here)来计算天数和年数。没有理由使用日期和年份double变量。