2012-06-10 2 views
0

En ce moment j'étudie la chaîne de modèle de conception de responsabilité et j'utilise Eclipse.Message d'erreur 'Impossible à résoudre ou n'est pas un champ'

Et je suis en train de compiler ce code, mais j'ai l'erreur de compilation « isLast ne peut être résolu ou non un champ »:

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

Et maintenant, voici l'interface:

public interface Discount { 

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

Répondre

2

Voici une recommandation: étudiez les normes de codage Sun Java et prenez-les à cœur. Vous les cassez trop souvent dans ce petit échantillon de code. Java est sensible à la casse: "discount" n'est pas la même chose que "Discount"; "dodiscount" n'est pas la même chose que "DoDiscount".

public interface Discount { 

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

Et la mise en œuvre:

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

Je pense que ce code est plus qu'un peu confus. Pas étonnant que vous ayez des problèmes.

+0

Oui, je sais. J'ai fait quelques modifications avec la fonction de remplacement de Notepad ++, donc, est hors de la norme. – Raphael

+0

Pas bon ....... Je me fous de votre design. Je pensais que tu utilisais Eclipse? – duffymo

+1

@Raphael: alors veuillez le modifier de nouveau afin qu'il soit * en * standard. Surtout si vous demandez à des volontaires d'essayer de lire et de comprendre votre code. 1+ –

Questions connexes