bonsoir a tous,
je dispose d'une petite classe pour calculer la factorielle d'un nombre.
--> le main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class factoriel {private int nb; public factoriel (int nb) {this.nb=nb;} public int getnb() {return(nb);} public int calcul() {int fact=nb;int res=nb; while(res>1) {res--; fact*=res; } return(fact); } }
--> class negaexception
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import java.lang.*; class testfactoriel {public static void main(String [] args) {try {int a=Integer.parseInt(args[0]); factoriel f=new factoriel(a); if (a<0) throw new negaException("la factorielle n'est pas défini"); System.out.println("le factoriel de "+f.getnb()+" est "+f.calcul()); } catch (ArrayIndexOutOfBoundsException e1) {System.out.println("veuillez indiquer le nombre sur la ligne de commande");} catch (NumberFormatException e2) {System.out.println("nb non entier");} catch (negaException e3) {System.out.println("-4 est negatif :"+e3.getMessage());} } }
je traite trois types d'exceptions, dans le cas ou nb est non indiqué sur la ligne de commande, dans le cas ou nb est non entier, et dans le cas ou nb est negatif.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class negaException extends Exception {public negaException(String s) {super(s);} }
on me demande en plus de traiter le cas ou le nb est egal a 20.
j'ai fait l'essai, effectivement ca retourne une valeur fausse negative,je comprend pas pourquoi ca retourne pas une valeur juste,j'ai pensé à un depassement puisque nb est un int...
je n'ai aucune idée comment traiter ce cas, c'est à dire, comment je vais faire pour connaitre d'avance que mon nombre en entré va me donné une factorielle fausse?
merci d'avance pour votre aide![]()
Partager