我做了这个练习,不是作业,我只是想解决:
我们管理一个有马的农场 在这个领域工作。
一匹马
- 一个名字,
- 最大金额 每周工作时间,
- 金额 实际工作时间和
- 表示她是否懒惰的字段 勤劳。
Horse类的所有属性 是私人的,他们没有制定者。 初始值通过 构造
Horse类有一个添加方法 一小时的实际工作。那种方法 每小时都叫一次(那匹马 作品)。在下周开始, 我们通过调用将该计数器重置为0 另一种不带参数的方法。
懒马不能超过34岁 小时/周,而努力工作的马 可以工作长达80个小时。
编码被屏蔽的Horse类 反对错误的工作时间数据。
你的主要方法将创造一匹马 并调用其方法,但数据 绝不能腐败,即。该 必须遵守工时限制。 例如,懒马的最大值 小时不能设置在34以上 工作小时数不能 大于最大值。
如果Horse类检测到尝试 设置不正确的数据,数据 保持不变(你打印一个 消息,以帮助您调试)。
正确数据的示例:
Name: "Blacky"
lazy: no
max hours / week = 70
actual hours this week = 61
Name: "Sultan"
lazy: yes
max hours / week = 30
actual hours this week = 1
损坏数据的示例(您的代码应该无法达到这种情况)
Name: "Georges"
lazy: yes
max hours / week = 50 (wrong because lazy horses work max 34h/week)
actual hours this week = 51 (wrong because 51 > 50).
这是我的代码:
public class Horse {
private String name;
private int maximumAmount;
private int amountWorked;
private boolean isLazy;
public Horse(String name, int maximumAmount, int amountWorked, boolean lasyOrHardworking) {
this.name = name;
this.maximumAmount = maximumAmount;
this.amountWorked = amountWorked;
this.isLazy = lasyOrHardworking;
}
void everyHour(){
amountWorked = amountWorked + 1;
System.out.println(amountWorked);
if((isLazy == true)&&(amountWorked <= 34)){
resetToZero();
}
if((isLazy == false)&&(amountWorked <= 80)){
resetToZero();
}
}
void resetToZero(){
this.amountWorked = 0;
}
}
和我的主要班级
public class MainHorse {
public static void main(String args[]){
Horse one = new Horse("Blacky", 34,35,true);
one.everyHour();
}
}
我的问题是我怎样才能在每次使用重置方法时获得我的方法,一般来说,我的代码有什么问题?
我更好,你可以帮助我
答案 0 :(得分:1)
我的问题是如何才能得到我的 方法每小时做一次重置方法, 一般来说,我的错误 码?
尝试使用java.util.Timer
次要细节:
错别字和拼写不一致会在某一天回来咬你(在Java中不太可能比不需要明确声明的语言),你应该坚持使用“懒惰”一词的正确拼写。
this.isLazy = lasyOrHardworking;
为什么不在参数中使用isLazy
,而不是lasyOrHardworking
this.isLazy = isLazy;
我认为bool == true
没有添加任何值,这对我来说更好看:
if(isLazy && (amountWorked <= 34))
答案 1 :(得分:1)
我认为你做错了是从everyHour()函数中调用resetToZero()。 我会每小时都返回一个bool来表示成功或失败。如果失败,它不会增加马的工作量,但打印调试消息。然后主代码可以检查它是否违反了马的限制。当周结束时,主代码也会调用resetToZero。
答案 2 :(得分:1)
你不应该回到零,只是不要增加工作时间。此外,如果这不是家庭作业,你有一些自由,所以我不会有最大小时和懒惰的自变量 - 这只是让你有机会让它们不同步。我会将命名常量用于maxLazyhours和maxHardworkinghours。
然后有一个名为IncrementHours的函数,只是说
if (lazy && hours < maxLazyhours) || hours < maxHardworkinghours)
hours++;
这更简单,对吧?