好的,这是功课,我有点挣扎,我无法弄清楚要传递给toString方法,我不太确定我获取当前和经过时间的方法是正确的 . 然后我必须将它传递给main方法并在输出语句中显示时间 . 这不是我真正的问题,我只能有3个变量,我怎样才能算出从当前时间开始经过的时间并且仍然保持原始的小时,秒,分钟变量而不改变它们所以来自两个时间构造函数的所有数据都保存在那些变数?我希望我有意义 . 谢谢你的任何意见
package chapter_10;
public class Time {
private long hour;
private long minute;
private long second;
public void time() {
long second = System.currentTimeMillis();
long minute = System.currentTimeMillis();
long hour = System.currentTimeMillis();
}
public void setTime(long elapsedTime){
long millisecond = System.currentTimeMillis();
long second = millisecond / 1000;
long minute = second / 60;
long hour = minute /60;
}
public long getHour() {
return hour;
}
public long getMinute() {
return minute;
}
public long getSecond() {
return second;
}
public String toString(){
return // what should i return here, String.towhat?
}
}
这是作业,只是为了澄清 . 时间等级:
为小时,分钟和秒提供3个私人数据成员 . 使用long或int类型 . 如果你使用int,你必须在ctors内部进行投射 . 添加一个使用类似于代码清单2.6中的代码的no-arg ctor,将值分配给当前时间的小时,分钟和秒 . 添加另一个ctor,它将采用名为elapseTime的单个长参数(更好的是elapsedTime),这是自Unix纪元日期以来的毫秒数 . 第二个ctor还将使用代码清单2.6中的代码来设置自纪元以来经过的时间的数据成员 . 第三个ctor没有必要 . 为每个数据成员添加一个getter . 每个getter只需要一个语句 . 需要getter,因为数据成员是私有的 . 添加一个toString方法,该方法返回Time对象的小时,分钟和秒 . 主要课程:
在main方法中创建一个带有no-arg ctor的Time对象 . 用另一个ctor创建一些时间对象 . 显示您实例化的每个对象的时间 .
3 回答
您根本没有正确设置这些私有数据成员 .
time方法中的值会影响私有数据成员 .
担心这一点,然后修复toString() .
我不能保证我完全/正确地理解你的问题 . 您是否考虑过将实际调用结果存储到
currentTimeMillis()
?那么你可以有三个变量:然后在需要时提取相关的部分?
好吧,toString通常是一个以独特方式表示对象的String . 由于您的对象是时间,因此唯一的时间由它的时间表示 .
所以,如果你写的东西如下:
这将是tostring方法的一个很好的实现,因为这代表了这个对象的成功 .
PS:您的毫秒或所有字段都作为字段存储在您的 class 中!检查出!
编辑:现在我注意到,你的代码根本不起作用 . System.currentTimeMillis()以UTC格式返回时间 . 这意味着,您正在进行的计算根本不起作用 . 您必须先从UTC转换为有效的毫秒方法 . 考虑使用Date / Calendar类来处理时间 .