TP commit questions 1.1 et 1.2

Programmation Avancée

Modérateur : Douin

Lionel C
Messages : 5
Inscription : 02 nov. 2017 11:48

TP commit questions 1.1 et 1.2

Message par Lionel C » 01 déc. 2017 12:51

Bonjour,

En local, les tests unitaires ne lèvent aucune exception mais en soumettant mon code à JNEWS j'obtiens de nombreux échecs pour les questions 1.1 et 1.2. J'ai revu mon code mais les erreurs sont toujours là ! J'ai divers messages d'erreur: calcul du nombre de contributeurs, somme allouée négative lors de la création, exception inattendue (!!! null), etc. Pour ce dernier cas, j'ai interdit l'ajout de Cotisant "null" mais cela n'a aucun effet sur les test. Comme je ne vois plus vraiment ce qui pose problème, je suis preneur d'un éclairage, d'une piste,... Voici un extrait de mon code pour les classes Contributeur et GroupeDeContributeurs:

Merci
Lionel

Code : Tout sélectionner

public Contributeur(String nom, int somme){
        super(nom);
        if(somme<0) throw new RuntimeException("la somme débitée doit être positive ou nulle !!!");   
        this.solde+=somme;
    }
    
    public void debit(int somme) throws SoldeDebiteurException {
	   if(somme <0) throw new RuntimeException("la somme débitée doit être positive ou nulle !!!");
	  if(somme>this.solde()) throw new SoldeDebiteurException("le solde est insuffisant !!!");
	  this.solde-=somme;
	}

	public  void credit(int somme){
	  if(somme <0) throw new RuntimeException("la somme débitée doit être positive ou nulle !!!");
	  this.solde+=somme;
	}
	
	public void affecterSolde(int somme){
      
   	if(somme <0) throw new RuntimeException("nombre négatif !!!");
    		try{
      			debit(solde()); credit(somme);
   		 }catch(SoldeDebiteurException sde){ 	
      		this.solde = somme; // mode efficace ...
    		}
    	}
  }

Code : Tout sélectionner

public GroupeDeContributeurs(String nomDuGroupe){
    super(nomDuGroupe);
    this.liste=new ArrayList<Cotisant>();
  }
  
  public void ajouter(Cotisant cotisant){
    if(cotisant!=null){
        cotisant.setParent(this);
        this.liste.add(cotisant);
    }    
  }
  public int nombreDeCotisants(){
    int nombre = 0;
        for( Cotisant co : this.getChildren()){
            nombre+=co.nombreDeCotisants();
        }
    return nombre;
  }
    public List<Cotisant> getChildren(){
    return this.liste;
  }
  
  public void debit(int somme) throws SoldeDebiteurException{
     for( Cotisant co : this.getChildren()){
        co.debit(somme);
    }
  }
  
  public void credit(int somme){
    for( Cotisant co : this.getChildren()){
        co.credit(somme);
    }
    
  }  
  public int solde(){
    int solde = 0;
    for( Cotisant co : this.getChildren()){
            solde+=co.solde();
    }
    return solde;
  }

[

Douin
Messages : 194
Inscription : 18 mars 2009 15:46

Re: TP commit questions 1.1 et 1.2

Message par Douin » 01 déc. 2017 13:14

Bonjour, les tests jnews sont souvent plus conséquents...

une piste possible ici

Code : Tout sélectionner

public void affecterSolde(int somme){
      
   	if(somme <0) throw new RuntimeException("nombre négatif !!!");
    		try{
      			debit(solde()); credit(somme);
   		 }catch(SoldeDebiteurException sde){ 	
      		this.solde = somme; // mode efficace ...
    		}
    	}
en cas d'exception SoldeDebiteur, curieux ce bout de code après le catch ( (c'est ou l'autre) i.e. debit(solde()); credit(somme); en version longue ou this.solde = somme; en mode efficace...)


à suivre...

Lionel C
Messages : 5
Inscription : 02 nov. 2017 11:48

Re: TP commit questions 1.1 et 1.2

Message par Lionel C » 01 déc. 2017 14:15

Bonjour,

Merci pour cette piste,

Lionel

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité