Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何简化公共无效工时(整数小时)循环? public static final int RETIREMENT_AGE=65; 公共工作者(字符串名称、浮动小时数、整数、, 工人(同事){ this.name=名称; this.hourlyIncome=hourlyIncome; 这个。年龄=年龄; this.coWorker=同事; } 公共假期工作时间(整小时){ 对于(inti=1;i_Java - Fatal编程技术网

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);
    }
}