Mini-calculatrice

Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
- - Dernière réponse : 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 :)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JHelp
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
merci Jhelp
regarde ce que g fais, s'il ya des choses a modifier ou a enlever pour le rendre plus claire et simple, en utilisant comme tu dis la console
--------------------------------------

// MiniCalculatrice :  simuler une calculatrice
import java.io.*;
public class MiniCalculatrice
{

       public static void main(String args[]) throws IOException
          { 
             BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
        int choix;

        do
           {
            afficherMenu();
            choix =lireValiderEntier (0,4);
         switch (choix)
            {
             	case 1 : additionner();	   break;
            case 2 : soustraire();	   break;
            case 3 : multiplier();     break;
            case 4 : deviser();        break;
            } 
            } while (choix!=0);

          } //fin de main
/*------------------------------------------------------------------------------*/
    // methode permettant de lire et valider le choix
   
   public static int lireValiderEntier(int debut , int fin)throws 
IOException
     {
    	int choix ;
    boolean valeur = false;
            BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
 
    do
       {

    	   choix = Integer.parseInt(clavier.readLine());
           if (choix>=0 &&choix <=4)
           valeur = true ;
   
            else 
            {System.out.print(" \tRefaire le choix    :");valeur= 
false ; } 

       }while (!valeur );
            return 	choix;
          } //fin de methode
 
/*-----------------------------------------------------------------------------*/ 
   // methode permettant de lire un entier
   
   	   static int lireNombreEntier()throws IOException
          {	  
            int nb ;
            BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
            System.out.print("\n\nEntrez le nombre : ");
        nb = Integer.parseInt(clavier.readLine());
        return nb;  
  
          }// fin de methode
   
 
/*------------------------------------------------------------------------------*/ 
   // methode permettant d'afficher le menu
        
   static void afficherMenu()
          {
       System.out.println("\n\n\n\t\tMENU PRINCIPAL\n");
       System.out.println("\t1. Additionner deux nombres\n");
       System.out.println("\t2. Soustraire deux nombres\n");
       System.out.println("\t3. Multiplier deux nombres\n");
       System.out.println("\t4. Deviser deux nombres\n");
       System.out.println("\t0. Quitter\n");
       System.out.print("\tFaites votre choix : ");

          }//fin de methode
 
/*----------------------------------------------------------------------------- */   
   // methode permettant d'additionner 2 entiers
   
   static void additionner() throws IOException
       {
          BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
      int nb1,nb2, resultat;

      nb1=lireNombreEntier();
      nb2=lireNombreEntier();
      resultat = nb1 + nb2;
      System.out.println("\n\t" + nb1 + " + " + nb2 + " = " + 
resultat);
       }//fin de methode
  
/*------------------------------------------------------------------------------ 
*/   
   // methode permettant de soustraire un entier d'un autre entier
      static void soustraire()throws IOException
       {
          BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
      int nb1,nb2, resultat;

          nb1=lireNombreEntier();
          nb2=lireNombreEntier();
      resultat = nb1 - nb2;
      System.out.println("\n\t" + nb1 + " - " + nb2 + " = " + 
resultat);
       }// fin de methode
  
/*------------------------------------------------------------------------------------------------------ 
*/   
   // methode permettant de multiplier 2  entiers
  
  static void multiplier()throws IOException
      {
         BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
     int nb1,nb2, resultat;

     nb1=lireNombreEntier();
     nb2=lireNombreEntier();

     resultat = nb1 * nb2;
     System.out.println("\n\t" + nb1 + " * " + nb2 + " = " + 
resultat);
      }// fin de methode
  
 
/*------------------------------------------------------------------------------*/  
    // methode permettant de deviser un entier par un autre
  
  static void deviser()throws IOException
      {
         BufferedReader clavier = new BufferedReader(new 
InputStreamReader(System.in));
     double nb1,nb2, resultat;

     nb1=lireNombreEntier();
     nb2=lireNombreEntier();

         if (nb2 != 0)
         {
         	resultat = nb1 / nb2;
            System.out.println("\n\t" + nb1 + " / " + nb2 + " = " + 
resultat);
         }
     else 
 System.out.println("\n\t le nombre 2 est nul, devision par 0 est 
impossible " );

     }
          
}  // fin MiniCalculatrice



merci

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
0
Merci
Oui c'est pas mal, Capture tout de même une Exception quand tu fait un parseInt et affiche une erreure, imagine que l'utilisateur tappe un mot ou un réeel, un etier trop grand ou trop petit, ça fait tout planter.
Il vaut mieux dire à l'utilisateur : "Hé ça va pas non, je n'accepete que les entiers !", que d e soritir du programme comme ça, avec une erreur.

JHelp
Commenter la réponse de JHelp
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
oui, tu as raison ca serait mieu que je fasse un message d'erreur
thxs JHelp

PS: peut-tu voir pour moi le truc que g poste sur la date du lendemain? merci encore


ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
excellent ca marche bien, pour les deux cas :big)
thxs JHelp

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
4
Date d'inscription
lundi 21 décembre 2009
Statut
Membre
Dernière intervention
25 avril 2010
0
Merci
salutttttt merciiiiiiiiii de m'avoir accepter
Commenter la réponse de sanaSBHA