En Java, les exceptions sont un concept clé qui vous permet de gérer le comportement de votre programme dans des cas extraordinaires. Voici la classe RevisedRatio
:
public static class RevisedRatio { /** * @pre n1 et n2 sont des chaînes de caractères != null * @post après conversion de n1 et n2 en entier, retourne n1/n2, peut lancer une NumberFormatException si un des strings n'est pas un nombre */ public static int divise(String n1, String n2) { int n = Integer.parseInt(n1); int d = Integer.parseInt(n2); return doDivise(n, d); } /** * @pre n et d sont des entiers * @post retourne n/d si d!=0, sinon throws AritmeticException */ public static int doDivise(int n, int d) { return (n/d); } /** * @pre args contient un tableau de String passés en ligne * de commande * @post si args contient seulement un String, affiche un * message d'erreur sinon affiche le résultat de la * division de args[0] par args[i] pour tout * 0 < i < args.length, un résultat par ligne */ public static int div(String[] args) { if(args.length < 2) { System.out.println("Erreur : la ligne de commande doit être :"); System.out.println("java ratio num1 num2 num3... "); System.exit(-1); } else { for(int i=1; i<args.length;i++) { /*1*/ // À réécrire System.out.println(args[0] + "/" + args[i] + " = " + divise(args[0], args[i])); } } return 0; } public static void main(String[] args){ if(div(args) != -1){ System.out.println("Tout s'est bien passé"); System.exit(0); } else{ System.out.println("Veuillez donner des arguments " +"corrects la prochaine fois."); System.exit(-1); } } }
La méthode div
récupère les arguments de la méthode main
qui l'appelle et traite la division de args[0]
par args[i]
pour tout 0 < i < args.length. La méthode affiche la réponse sous la forme "args[0]/args[i] = reponse
". Par exemple, quand on l'appelle avec les arguments "20"
, "5"
et "10"
, la méthode affiche sur la sortie standard :
20/5 = 4 20/10 = 2
Pour le moment, l'appel à cette méthode avec de mauvais arguments pourrait faire crasher le programme en lançant une NumberFormatException
ou une ArithmeticException
.
Réécrivez entièrement l'intérieur de la boucle for
de manière à ce que lorsqu'une de ces deux exceptions est lancée, la méthode affiche le message d'erreur Vous ne pouvez pas diviser par 0.
pour la division par 0 et le message La chaîne de caractères passée à parseInt() ne contient pas que des chiffres.
pour l'erreur de parsing, sur la sortie d'erreur standard et retourne directement la valeur -2
. Sur la sortie d'erreur standard, on doit pouvoir voir par exemple, en cas de NumberFormatException:
La chaîne de caractères passée à parseInt() ne contient pas que des chiffres.