Relancer un script java

[Résolu/Fermé]
Signaler
Messages postés
129
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
15 mai 2014
-
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
-
Bonjour,
Je viens de commencer java et j'ai une question toute simple (enfin je pense).
Voilà, mon petit programme prends 3 notes sur 20 et affiche une moyenne sur 20 et une autre en pourcentage. Jusque là tout fonctionne mais j'aimerais qu'en cas de valeur eronnée (note > 20) le programme affiche un message d'erreur et recommence depuis le début.

Voici mon code :
public class moyenne{
	public static void main(String args[]){
		System.out.println("Veuillez insérer 3 notes /20");
		final float NOTEA = Clavier.lireFloat();
		final float NOTEB = Clavier.lireFloat();
		final float NOTEC = Clavier.lireFloat();
		float twenty = (NOTEA + NOTEB + NOTEC)/3;
		int percent = (int) twenty * 5;
		if(twenty<=20){
			System.out.println("Moyenne : "+twenty+"/20 ou "+percent+"%");  
		}
		else{
			System.out.println("Une ou plusieur des notes que vous avez entrées n'est pas comprise entre 0 et 20. Veuillez recommencer.");
			// Ici je voudrais rappeler ma classe avec quelque chose du genre : moyenne()
		}
	}
}


Merci pour votre aide.

3 réponses

Messages postés
129
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
15 mai 2014
11
Ok merci c'est assez logique au fond.
Pour les éventuels suivants voici comment j'ai fait.
public class moyenne{
	public static void check(){
		System.out.println("Veuillez insérer 3 notes /20");
		final float NOTEA = Clavier.lireFloat();
		final float NOTEB = Clavier.lireFloat();
		final float NOTEC = Clavier.lireFloat();
		float twenty = (NOTEA + NOTEB + NOTEC)/3;
		int percent = (int) twenty * 5;
		if(twenty<=20){
			System.out.println("Moyenne : "+twenty+"/20 ou "+percent+"%");  
		}
		else{
			System.out.println("Une ou plusieur des notes que vous avez entrées n'est pas comprise entre 0 et 20. Veuillez recommencer.");
			check(); // la fonction boucle sur elle même
		}

	}
	public static void main(String args[]){
		check();
	}
}
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
305
Par contre faut que tu es conscience que tu introduis de la récursivité la.

A savoir que tu appels ta fonction à l'interieur d'elle même!
Comme tu le fais à la fin ca change rien, mais si ton code évolue ca peut avoir son importance!
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
305
Salut,

tu peux faire une boucle autour de ton prog avec conditions de sortie "note correct" par exemple.
Ou alors de manière plus propre!
Ne pas faire le traitement dans ton main, mais dans une fonction annexe que tu pourras relancer à souhait. :-)


public class moyenne{ 
    public static void main(String args[]){ 
    boolean isValid= false; 
        while(!isValid){ 
            calculmoyenne(); 
        } 
   } 

    private boolean calculMoyenne(){ 
        System.out.println("Veuillez insérer 3 notes /20"); 
        final float NOTEA = Clavier.lireFloat(); 
        final float NOTEB = Clavier.lireFloat(); 
        final float NOTEC = Clavier.lireFloat(); 
        float twenty = (NOTEA + NOTEB + NOTEC)/3; 
        int percent = (int) twenty * 5; 

        if(twenty<=20){ 
            System.out.println("Moyenne : "+twenty+"/20 ou "+percent+"%");   
            return true; 
        } 
        else{ 
            System.out.println("Une ou plusieur des notes que vous avez entrées n'est pas comprise entre 0 et 20. Veuillez recommencer."); 
            return false; 
        } 
    }
}
 
Voilà par exemple un code, avec la bonne indentation en plus ^^


La culture c'est comme la confiture, moins en a plus on l'étale!