IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Expressions EL et division par zéro


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut Expressions EL et division par zéro
    Bonjour,

    Un tuto me propose de créer une petite calculatrice avec Java EE : j'ai créé deux inputs et une liste déroulante nommée "operation" où l'on peut choisir entre les quatre opérations de base. Tout fonctionne à merveille... mais un peu trop bien : si je pose 45/0, l'application m'affiche "45/0 = 0" !! J'ai pourtant bien géré l'erreur dans mon code.
    op1 est le premier opérande, op2 le deuxième, signe est le signe de l'opération.
    Voici le code de getResultat() qui renvoie l'attribut int resultat de mon bean :

    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
    	public int getResultat() throws ArithmeticException{
    		switch(operation){
    		case "addition":
    			resultat = op1+op2;
    			break;
    		case "soustraction":
    			resultat = op1-op2;
    			break;
    		case "multiplication":
    			resultat = op1*op2;
    			break;
    		case "division":
    			try {
    				resultat = op1/op2;
    			} catch (ArithmeticException e) {
    				erreur = "Erreur : division par zéro !";
    			}
    			break;
    			default:
    				operation = "addition";
    				resultat = op1+op2;
    				break;
    		}
     
    		return resultat;
    	}
    (j'ai naturellement un getErreur()...)
    J'ai aussi essayé la version suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		case "division":
    			if(op2==0){
    				erreur = "Erreur : division par zéro !!";
    			}else{
    				resultat = op1/op2;
    			}
    			break;
    Et voici l'expression EL qui indique ce que je dois afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		le résultat est : <br />${calcul.op1}${calcul.signe}${calcul.op2} =
    			${!empty calcul.erreur ? calcul.erreur : calcul.resultat}
    Y a-t-il quelque chose que je n'ai pas compris dans la syntaxe de {empty...?}. Pour info, j'ai essayé l'expression dans l'autre sens : ${empty calcul.erreur ? calcul.resultat:calcul.erreur}, j'ai essayé en passant une simple variable erreur (sans en faire un attribut du bean), j'ai essayé avec une simple condition, sans utiliser une exception... Mais l'application m'affirme encore et toujours qu'un entier divisé par zéro est égal à zéro !

    Quelqu'un peut-il m'expliquer ce qui se passe ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    op1 et op2 sont des int, des Integer, des double, des Double?

  3. #3
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    op1 et op2 sont des int, des Integer, des double, des Double?
    Ce sont des int...

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu peux montrer ton bean?

  5. #5
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu peux montrer ton bean?
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    package com.octpcalc.beans;
     
    import java.io.Serializable;
     
    public class Calcul implements Serializable{
    	/**
             * @author Markos
             */
    	private static final long serialVersionUID = 1L;
    	private int op1;
    	private int op2;
    	private int resultat;
    	private String operation;
    	private String signe;
    	private String erreur;
     
    	/**
             * @return the op1
             */
    	public int getOp1() {
    		return op1;
    	}
    	/**
             * @param op1 the op1 to set
             */
    	public void setOp1(int op1) {
    		this.op1 = op1;
    	}
    	/**
             * @return the op2
             */
    	public int getOp2() {
    		return op2;
    	}
    	/**
             * @param op2 the op2 to set
             */
    	public void setOp2(int op2) {
    		this.op2 = op2;
    	}
    	/**
             * @return the operation
             */
    	public String getOperation() {
    		return operation;
    	}
    	/**
             * @param operation the operation to set
             */
    	public void setOperation(String operation) {
    		this.operation = operation;
     
    		switch(operation){
    		case "addition":
    			this.signe = " + ";
    			break;
    		case "soustraction":
    			this.signe = " - ";
    			break;
    		case "multiplication":
    			this.signe = " x ";
    			break;
    		case "division":
    			this.signe = " / ";
    			break;
    			default:
    				this.signe = " + ";
    		}
    	}
    	/**
             * @return the resultat
             */
    	public int getResultat() throws ArithmeticException{
    		switch(operation){
    		case "addition":
    			resultat = op1+op2;
    			break;
    		case "soustraction":
    			resultat = op1-op2;
    			break;
    		case "multiplication":
    			resultat = op1*op2;
    			break;
    		case "division":
    			try {
    				resultat = op1/op2;
    			} catch (ArithmeticException e) {
    				erreur = "Erreur : division par zéro !";
    			}
    			break;
    			default:
    				operation = "addition";
    				resultat = op1+op2;
    				break;
    		}
     
    		return resultat;
    	}
    	/**
             * @return the signe
             */
    	public String getSigne() {
    		return signe;
    	}
    	/**
             * @return the erreur
             */
    	public String getErreur() {
    		return erreur;
    	}		
    }

  6. #6
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Salut,

    Dans une calculette tu as 10 int en input .
    Mais le résultat obtenu est-il toujours un int ?
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Division par zéro
    Par soltani1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/05/2006, 09h42
  2. [Tableaux] Pb de division par zéro...
    Par blueice dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2005, 15h52
  3. [CR][VS.NET]Division par zéro
    Par San Soussy dans le forum SDK
    Réponses: 2
    Dernier message: 31/08/2005, 14h40
  4. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo