在java中修改方法不起作用
课程在java中修改方法不起作用,java,class,methods,Java,Class,Methods,课程 public JTime add(JTime t2){ JTime sum = new JTime(); sum.hour = this.hour + t2.hour; sum.minute = this.minute + t2.minute; sum.second = this.second + t2.second; return sum; } public void increment (double seconds){ this.se
public JTime add(JTime t2){
JTime sum = new JTime();
sum.hour = this.hour + t2.hour;
sum.minute = this.minute + t2.minute;
sum.second = this.second + t2.second;
return sum;
}
public void increment (double seconds){
this.second = seconds;
while(this.second >= 60.0){
this.second -= 60.0;
this.minute += 1;
}
while(this.minute >= 60.){
this.minute -=60;
this.hour +=1;
}
while(this.hour >= 24){
int result = this.hour - 24;
this.hour = result;
}
}
Main
public static void main(String[] args) {
JTime startTime = new JTime(22, 50, 0.0);
JTime runningTime = new JTime(5, 16, 0.0);
JTime endTime = startTime.add(runningTime);
System.out.println(endTime);
}
}
我只是在遵循一本书中发表的方法。我在这里试图实现的是以24小时格式显示时间。
increment
方法应该这样做,但它不是。add方法返回一个对象,因此您需要重写其toString或创建一个返回单个结果值的方法。例如:
@Override
public String toString()
{
return "Hours:"+this.hour+", minutes:"+this.minute+", seconds:"+this.second;
}
使用整数除法
/
(7/5==1)和模%
(7%5==2)可以
修复三个字段中的溢出:
int hour;
int minute;
int second;
public JTime plus(JTime t2) {
JTime sum = new JTime();
sum.hour = this.hour + t2.hour;
sum.minute = this.minute + t2.minute;
sum.second = this.second + t2.second;
normalize();
return sum;
}
private void normalize() {
minute += second / 60;
second %= 60;
hour += minute / 60;
minute %= 60;
hour %= 24;
}
public void increment(int seconds) {
second += seconds;
normalize();
}
@Override
public String toString() {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
将add
重命名为plus
,以指示时间对象本身没有增加,而是传递了一个新的时间
另外,溢出(天数)也不错。我看不到任何地方真正调用了
increment
。我正在读的这本书没有提到任何关于调用的内容,所以我假设该方法会自动更改。您预期的输入和输出是什么,实际的输出是什么?我无法与这本书交谈,但是,在Java中,方法不会自动/神奇地被调用。如果你看11.9,它就是这么说的。