Relancer un script java

Résolu/Fermé
madmaskx Messages postés 129 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 15 mai 2014 - 6 mai 2010 à 11:44
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 6 mai 2010 à 13:21
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.

A voir également:

3 réponses

madmaskx Messages postés 129 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 15 mai 2014 12
6 mai 2010 à 12:06
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();
	}
}
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
6 mai 2010 à 13:21
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!
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
Modifié par xav3601 le 6/05/2010 à 11:55
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!
-1