我上周刚开始学习Java,目前正忙于练习。基本上,问题是你在军队时间里取两个数字,然后输出差值。例如
Please Enter First time : 0900
Please Enter second time: 1730
Result - > 8 hours and 30 minutes
这个问题的好处是确保程序在第一次大于第二次的情况下运行。首先,我正在努力解决第一部分,这就是我目前拥有的
class TimeInterval{
private double timeOne;
private double timeTwo;
public TimeInterval(double timeOne, double timeTwo){
timeOne = this.timeOne;
timeTwo = this.timeTwo;
}
public double getMinutes(){
double minuteDiff = timeTwo - timeOne;
minuteDiff = minuteDiff%60.0;
return minuteDiff;
}
public double getHours(){
double hours = timeTwo - timeOne;
hours = hours - getMinutes();
hours = hours/60.0;
return hours;
}
}
public class DataSet{
public static void main(String [] args){
TimeInterval time = new TimeInterval(0900,1730);
}
}
下面是什么让人眼花缭乱。我想将timeOne
的新对象设置为0900
,但我遇到了一个错误。上面写着"整数太长",这对我来说很有趣,所以我做了一些研究。在我的书第4章的最后一节中,我们讨论了格式化的东西,比如System.out.printf
和%d, %f
我查看了SO,发现了一种可以做之类的事情的方法
String.format("%05d", yournumber);
在这里你可以在你的号码前加5个0。问题是,我真的不确定如何在我的代码中实现这一点。我试着设置timeTwo=String.format…等等,但由于它是一个字符串,我真的无法对它进行数学运算。而且它不允许我在String.format.
之后将其转换为双精度。我应该如何处理我的问题?
以零开头的数字文字被解释为八进制数字,以8为基数,只能使用数字0-7。
因此,数字文字0900
是一个无效的八进制数字。尝试:
TimeInterval time = new TimeInterval(900, 1730);
提示:避免对字段和参数使用double
。使用int
,不会受到double
的不精确性的影响。int
可以处理您需要的任何号码/时间。