我是学习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.");
}
}
}
答案 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
变量。