-
exo opérande java
Bonjour a tous,
je début en java et je suis un peu coincé sur un exo. J'aimerai un peu d'aide svp !
l'exo est :
créer un programme qui demande la saisie d'une entrée de type numérique
mélangée avec les caractères '+' et '-' ,non vide
et qui affiche ceci :
si paramètre est 3-1 alors affiche 2
si paramètre est -33-1 alors affiche -34
si paramètre est -2+3+7 alors affiche 8
si paramètre est 44++1+ alors affiche 45
si paramètre est 44--1 alors affiche 45
-
Salut,
La manière simple d'aborder le problème est de procéder à une saisie unique (classe Scanner) qui admet une chaîne de caractères unique en entrée. Ensuite, il s'agit de découper la chaîne pour récupérer une suite de morceaux de chaînes (des nombres et des opérateurs).
Dans le cas simple, qui semble être le tiens, on peut traiter ensuite les morceaux les uns après les autres avec un automate à état (un truc avec des registres qui stocke le résultat courant, le dernier nombre rencontré non traité, le dernier opérateur rencontré non traité, et qui en fonction du prochain morceau, avec des if ou des switch déterminent ce qu'il faut faire (soit du dernier opérateur rencontré, soit du dernier nombre rencontré) afin de determiné le résultat courant. On parcourt tous les morceaux de la chaîne et on a le résultat à la fin.
Le cas un peu plus complexe est si on a d'autres types d'opérateurs (tels que multiplier ou diviser) ou si on a des parenthèses,ce qui revient plus ou moins au même en fait, qui oblige à traiter un "arbre ou de faire de la récursivité.
Pour la saisie, faire un peu plus siouxe et de justement procéder à de multiple saisie pour chacun des morceaux de chaînes : je ne pense pas à priori que c'est plus simple à faire que de procéder comme je viens de dire. Le découpage d'une chaîne de caractères qui ne contient que des chiffres, sauf des opérateurs qui constituent des séparateurs est simple (un parcourt, des tests, une collection pour stocker le résultat).
Voici des pistes générales, essaye de faire ce que tu peux, et reviens si tu as des questions ou des problèmes particuliers.