Mini-calculatrice

cs_criss Messages postés 28 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 6 avril 2003 - 31 janv. 2003 à 05:50
sanaSBHA Messages postés 4 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 25 avril 2010 - 13 févr. 2010 à 12:31
Bonjour!!
je suis nouveau dans l'univers JAVA et je me casse la tete a resoudre un petit probleme( gros pour moi) si vous pouvez m'aider, merci, voila le truc:

Écrire un programme qui lit deux nombres entiers et un caractère représentant une opération arithmétique ( '+' pour l'addition, '-' pour la soustraction, 'x' pour la multiplication, et '/' pour la division ); puis le programme effectue le calcul indiqué par le code d'opération et enfin, il affiche le résultat. (attention: vous devez éviter les divisions par 0 et prévoir un message d'erreur en conséquence; vous devez prévoir également l'entrée d'un code d'opération invalide et afficher un message en conséquence). Donnez des exemples d'exécution qui testent votre programme dans tous ses cheminements possibles.

milles merci d'avance :)
A voir également:

6 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
31 janv. 2003 à 07:45
Tu peux faire celà de plusieurs maniére. En mode graphique ou simplement en mode console ?
Ensuite, il s'agit tout simplement d'une analyse lexical.
Tu récupéres une chaîne et tu l'analyse.
Pour analyser tu peux faire :
private char[] operations={'+','-','*','/'};

public double operation(String chaine) throws Exception
{
   //On cherche à savoir de quelle opération il s'agit
   //Pas d'opération trouvée
   char operation=' ';
   //Place de l'opération
   int indice=-1;
   for(int i=0;(i<operations.length)&&(operation==' ');i++)
    {
        indice=chaine.indexOf(operations[i]);
        if(indice>0)
            operation=operations[i];
    }
   //Si on a pas trouvé d'opération valide 
   if(operation==' ')
     throw new Exception("Il n'y a pas d'opérateur valide");
  //On regarde si le premier argument est un nombre
  double op1=0d;
  try
  {
     op1=Double.parseDouble(chaine.subString(0,indice).trim());
   }
   cacth(Exception e)
   {
      throw new Exception("Le premier opérateur n'est pas un nombre");
    }
  //On regarde si le premier argument est un nombre
  double op2=0d;
  try
  {
     op2=Double.parseDouble(chaine.subString(indice+1).trim());
   }
   cacth(Exception e)
   {
      throw new Exception("Le second opérateur n'est pas un nombre");
    }
    //Selon l'opération
    switch(operation)
    {
        case '+' :
           return op1+op2;
        case '-' :
           return op1-op2;
        case '*' :
           return op1*op2;
        case '+' :
           if(Math.abs(op2)<Double.MIN_VALUE)
              throw new Exception("Division par zéro");
           return op1/op2;
    }
    throw new Exception("Probléme inconnu !");
}


Et pour l'utiliser :
public void analyse(String chaine)
{
   try
   {
       afficheReponse(operation(chaine));
   }
   catch(Exception e)
    {
        afficheErreur("Erreur : "+e.getMessage());
     }
}


JHelp
1
Rejoignez-nous