Bonjour à tous on s'est amusé en cours à ecrire petit code en java pour une calculatrice.
le but est de pouvoir faire un calcul en tenant compte des priorités c'est à dire pour moi des signes. Pour cela j'ai donc utilisé un stringTokenizer pour delimiter le calcul et récupérer les différents membres de l'opération. Seulement on a réussi avec uniquement 02 membres.
Je voudrais avoir des pistes pour étendre le code à une suites de plusieurs membres sans limites.
Merci
Voici mon code


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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.io.IOException;
import java.rmi.ServerException;
import java.util.StringTokenizer;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 *
 * @author Arnaud *****
 */
public class Calculatrice extends HttpServlet
{
    @Override
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException
{
            this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp")
                    .forward(request, response);
}
    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException
{
        String valeurs = request.getParameter("valeurs");
        StringTokenizer stMul = new StringTokenizer(valeurs,"*");
        StringTokenizer stAdd = new StringTokenizer(valeurs,"+");
        StringTokenizer stSou = new StringTokenizer(valeurs,"-");
        StringTokenizer stDiv = new StringTokenizer(valeurs,"/");
        int resultat = 0;
 
 
        if(stMul.countTokens()==1){
            if (stAdd.countTokens()==1){
                if (stSou.countTokens()==1){
                    if (stDiv.countTokens()==1){
                        System.out.println("Error");
                  }
                    else {resultat= Integer.parseInt(stDiv.nextToken())/Integer.parseInt(stDiv.nextToken());}
              }
                 else {resultat= Integer.parseInt(stSou.nextToken())-Integer.parseInt(stSou.nextToken());}
            }
               else {resultat= Integer.parseInt(stAdd.nextToken())+Integer.parseInt(stAdd.nextToken());}
        }
           else{resultat= Integer.parseInt(stMul.nextToken())*Integer.parseInt(stMul.nextToken());}
 
         request.setAttribute("resultat", resultat);
 
        this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp")
             .forward(request, response);
 
}
}