我上周刚刚开始学习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.
之后我也不会让它把它转换为双倍我应该如何处理我的问题?
答案 0 :(得分:3)
以零开头的数字文字被解释为octal个数字,基数为8,只能使用数字0-7。
因此,数字文字locate
是无效的八进制数字。尝试:
0900
提示:避免对字段和参数使用TimeInterval time = new TimeInterval(900, 1730);
。请改用double
,这不会受int
的不精确影响。 double
可以处理您需要的任何数量/时间。