0

现在我正在研究责任链设计模式并使用Eclipse

我正在尝试编译此代码,但出现编译错误“isLast 无法解析或不是字段”:

public class OverFive implements Discount {
    private Discount next; //
    public boolean isLast = false;

    public void setNext(Discount next, boolean Last) {
        this.next = next;
        this.next.isLast = Last; // Here is the error.
    }

    public double DoDiscount(Budget budget) {
        if (budget.getValue() > 500) {
            return budget.getValue() * 0.10;
        }
        if (this.next.isLast == false) {
            return next.DoDiscount(budget);
        }
        else {
            return 0;
        }
    }
}

现在,这是界面:

public interface Discount {

    double DoDiscount(Orcamento orcamento);
        void setNext(Discount next, boolean Last);
    }
4

2 回答 2

1

这里有一个建议:研究 Sun Java 编码标准并将它们牢记在心。在这个小代码示例中,您过于频繁地破坏它们。

Java 区分大小写:“折扣”与“折扣”不同;“dodiscount”与“DoDiscount”不同。

public interface Discount {

    double doDiscount(Orcamento orcamento);
    void setNext(Desconto next, boolean last);
    void setLast(boolean last);
} 

和实施:

public class OverFive implements Discount {
    private Desconto next;
    private boolean last = false;

    public void setLast(boolean last) {
        this.last = last;
    }

    public void setNext(Desconto next, boolean last) {
        this.next = next;
        this.setLast(last);
      }

    // this method is utter rubbish.  it won't compile.
    public double doDiscount(Orcamento budget){
        if (budget.getValue() > 500){
            return budget.getValue() * 0.10;
        }if (this.next.isLast == false){
            return next.discount(budget);
        }else{
            return 0;
        }   
    }
}

我认为这段代码有点令人困惑。难怪你有问题。

于 2012-06-10T22:23:46.947 回答
0

我不确定这是否与上述问题相同,但我遇到了同样的错误。就我而言,我使用的是旧版本的 Eclipse,它显然不喜欢有一个与包同名的类。我通过给包一个不同的名称来解决这个问题。

于 2019-10-06T02:04:22.463 回答