Java 如何简化公共无效工时(整数小时)循环? public static final int RETIREMENT_AGE=65; 公共工作者(字符串名称、浮动小时数、整数、, 工人(同事){ this.name=名称; this.hourlyIncome=hourlyIncome; 这个。年龄=年龄; this.coWorker=同事; } 公共假期工作时间(整小时){ 对于(inti=1;i
这应该做同样的事情Java 如何简化公共无效工时(整数小时)循环? public static final int RETIREMENT_AGE=65; 公共工作者(字符串名称、浮动小时数、整数、, 工人(同事){ this.name=名称; this.hourlyIncome=hourlyIncome; 这个。年龄=年龄; this.coWorker=同事; } 公共假期工作时间(整小时){ 对于(inti=1;i,java,Java,这应该做同样的事情 public static final int RETIREMENT_AGE = 65; public Worker(String name, float hourlyIncome, int age, Worker coWorker) { this.name = name; this.hourlyIncome = hourlyIncome; this.age = age; this.coWorker = coWorker; }
public static final int RETIREMENT_AGE = 65;
public Worker(String name, float hourlyIncome, int age,
Worker coWorker) {
this.name = name;
this.hourlyIncome = hourlyIncome;
this.age = age;
this.coWorker = coWorker;
}
public void work(int hours) {
for(int i = 1; i<=hours; i++) {
earned += hourlyIncome;
if(coWorker!=null && i%5==0)
delegate(1); // from time to time
}
}
public void work() {
while(age++ < RETIREMENT_AGE)
work(1600);
}
private void delegate(int hours) {
coWorker.work(hours);
}
除了委托方法变得越来越复杂,一些内部状态也随之改变之外
编辑:在这种情况下,你可以这样做
public void work(int hours) {
earned += hourlyIncome * hours;
if(coWorker != null){
delegate(hours / 5);
}
}
公共无效工作(整数小时){
挣得+=小时收入*小时;
if(同事!=null){
最终int同事人数=小时/5;
for(int i=0;i
在无参数work
方法中,您的方法在循环中每增加一次age。根据您在方法中的操作,可能会减少对work的调用数(1600)
具体地说,如果work(2*n);
产生与work(n);work(n);
相同的结果,您只需计算退休前的总小时数,然后调用work()
公共作废工作(){
if(年龄<退休年龄){
工作((退休年龄)*1600);
}
}
首先,使缩进更好,目前很难阅读它似乎不太长也不太复杂为什么要使缩进更简单:添加y
次的x+x+…+x
定义是什么?除非同事没有覆盖工作()
method。非常感谢你的帮助,puj。RealAn疑论者:coWorker实际上是Worker的一个实例,而不是一个子类,因此work不能被它覆盖…@Jim McGee,该类不能保证这一点。你可以将Worker
的子类的一个实例传递给该构造函数。如果你不允许,请声明该类<代码>最终版
或工作(…)
方法最终版。
public void work(int hours) {
earned += hourlyIncome * hours;
if(coWorker != null){
final int coworkerHours = hours / 5;
for(int i = 0 ; i < coworkerHours; i++){
delegate(1);
}
}
}
public void work() {
if(age < RETIREMENT_AGE) {
work((RETIREMENT_AGE - age) * 1600);
}
}