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

Android Discussion :

Application pour les équations du second degré buguée


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Application pour les équations du second degré buguée
    Bonjour tout le monde!

    Alors voilà, ça fait quelques semaines que je m'essaye à la programmation pour android, et j'ai enfin réussi à faire quelque chose de plus ou moins fonctionnel: un programme qui calcule la ou les réponses à une équation du second degré

    AndroidEquationseconddegre.java
    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
    package com.android.equationduseconddegre;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Button;
    import java.lang.Math;
     
    public class AndroidEquationseconddegre extends Activity {
        /** Called when the activity is first created. */
     
        private EditText variableA;
        private EditText variableB;
        private EditText variableC;
        private float valeurA;
        private float valeurB;
        private float valeurC;
        private float delta;
        private Button BoutonCalc;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            variableA = (EditText) findViewById(R.id.ValNombreA);
            variableB = (EditText) findViewById(R.id.ValNombreB);
            variableC = (EditText) findViewById(R.id.ValNombreC);
            BoutonCalc = (Button) findViewById(R.id.BoutonCalculer);
     
            BoutonCalc.setOnClickListener(
            		new OnClickListener()
            		{
            			public void onClick(View v)
            			{
     
     
            			valeurA = Integer.parseInt(variableA.getText().toString());
            			valeurB = Integer.parseInt(variableB.getText().toString());
            			valeurC = Integer.parseInt(variableC.getText().toString());
     
            			delta = (valeurB * valeurB) - ( 4 * (valeurA * valeurC));
     
            			if (delta > 0)
            			{
            					((TextView)findViewById(R.id.Resultat)).setText("Il y a deux solutions: " + ((- valeurB + Math.sqrt(delta) / (2 * valeurA))) + " et " + ((- valeurB - Math.sqrt(delta) / (2 * valeurA))) + ".");					
    					}
     
            			else if (delta == 0)
            			{
            				((TextView)findViewById(R.id.Resultat)).setText("Il y a une solution: " + (- valeurB / (2 * valeurA)) + ".");
            			}
     
            			else
            			{
            				((TextView)findViewById(R.id.Resultat)).setText("Il n'y a pas de solution.");        				
            			}
     
     
            			}
     
    				});
            }
     
        }

    res/layout/main.xml
    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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
     
            <TextView
                android:id="@+id/NombreA"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/TexteNombreA" />
     
            <EditText
                android:id="@+id/ValNombreA"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="numberSigned"
                android:hint="@string/ValeurA" >
     
                <requestFocus />
            </EditText>
     
        </LinearLayout>
     
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
     
            <TextView
                android:id="@+id/NombreB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/TexteNombreB" />
     
            <EditText
                android:id="@+id/ValNombreB"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="numberSigned"
                android:hint="@string/ValeurB" />
     
        </LinearLayout>
     
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
     
            <TextView
                android:id="@+id/NombreC"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/TexteNombreC" />
     
            <EditText
                android:id="@+id/ValNombreC"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:inputType="numberSigned"
                android:hint="@string/ValeurC" />
     
        </LinearLayout>
     
        <Button
            android:id="@+id/BoutonCalculer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/BoutonCalc"/>
     
        <TextView
            android:id="@+id/Resultat"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/Resultat"
            android:textSize="20dp" />
     
    </LinearLayout>
    res/values/strings.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="app_name">Equation du second degré</string>
        <string name="BoutonCalc">Calculer</string>
        <string name="Resultat"/>
        <string name="TexteNombreA">Entrez la valeur de A  </string>
        <string name="TexteNombreB">Entrez la valeur de B  </string>
        <string name="TexteNombreC">Entrez la valeur de C  </string>
        <string name="ValeurA">Entrez A</string>
        <string name="ValeurB">Entrez B</string>
        <string name="ValeurC">Entrez C</string>
     
    </resources>

    Le problème, je n'arrive pas à mettre de sécurité en place pour empêcher le clic sur le bouton tant que les trois champs ne sont pas remplis. Quand on clique sur le bouton calculer, l'application plante. Eclipse me dit "unable to parse '' as integer".
    Il faut aussi que je mette en place une boucle pour empêcher la valeurA d'avoir la valeur 0 afin d'éviter le division par 0, mais c'est le même problème. Si quelqu'un peut m'orienter je lui serais très reconnaissant...

    Merci d'avance

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Dans le onClick fait des tests sur tes EditText avant d'essayer de parser/faire le calcul.
    Comme ça l'utilisateur peut cliquer sans que ça plante, par contre faut l'avertir d'entrer 3 nombres?

    Tu peux aussi forcer les EditText à pouvoir contenir uniquement des nombres et tu mets par défauts 0, ensuite tu mets un listener qui regarde dès que la valeure d'un Etittext change et si les 3 EditText contiennent un nombre tu enabled le bouton.
    Keith Flint 1969 - 2019

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    En première opération de ton bouton, vérifie les champs.
    S'ils sont vides, s'ils sont remplis avec autre chose que des chiffres, [des choses non exploitables] ...
    Si tu passes tout ça, tu lances l'opé.

    Donc, grosso-modo, au début, fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "".equals(monEditText.getText()); // pour la vérif non rempli
    "0".equals(monEditText.getText()); // pour la vérif du 0
    EDIT : grillé
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci pour les réponses mais on m'a orienté vers les try catch sur le tchat, et ça fonctionne

    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
    package com.android.equationduseconddegre;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Button;
    import java.lang.Math;
     
    public class AndroidEquationseconddegre extends Activity {
        /** Called when the activity is first created. */
     
        private EditText variableA;
        private EditText variableB;
        private EditText variableC;
        private float valeurA;
        private float valeurB;
        private float valeurC;
        private float delta;
        private Button BoutonCalc;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            variableA = (EditText) findViewById(R.id.ValNombreA);
            variableB = (EditText) findViewById(R.id.ValNombreB);
            variableC = (EditText) findViewById(R.id.ValNombreC);
            BoutonCalc = (Button) findViewById(R.id.BoutonCalculer);
     
            BoutonCalc.setOnClickListener(
            		new OnClickListener()
            		{
            			public void onClick(View v)
            			{
     
            			try 
            			{
            				valeurA = Integer.parseInt(variableA.getText().toString());
    					} catch (Exception e)
    					{
    						valeurA = 1;
    						((EditText)findViewById(R.id.ValNombreA)).setHint("1");
     
    					}   			
     
            			try 
            			{
            				valeurB = Integer.parseInt(variableB.getText().toString());
    					} catch (Exception e)
    					{
    						valeurB = 1;
    						((EditText)findViewById(R.id.ValNombreB)).setHint("0");
     
    					}   
     
            			try 
            			{
            				valeurC = Integer.parseInt(variableC.getText().toString());
    					} catch (Exception e)
    					{
    						valeurC = 1;
    						((EditText)findViewById(R.id.ValNombreC)).setHint("0");
     
    					}   
     
            			delta = (valeurB * valeurB) - ( 4 * (valeurA * valeurC));
     
            			if (delta > 0)
            			{
            					((TextView)findViewById(R.id.Resultat)).setText("Il y a deux solutions: " + ((- valeurB + Math.sqrt(delta) / (2 * valeurA))) + " et " + ((- valeurB - Math.sqrt(delta) / (2 * valeurA))) + ".");					
    					}
     
            			else if (delta == 0)
            			{
            				((TextView)findViewById(R.id.Resultat)).setText("Il y a une solution: " + (- valeurB / (2 * valeurA)) + ".");
            			}
     
            			else
            			{
            				((TextView)findViewById(R.id.Resultat)).setText("Il n'y a pas de solution.");        				
            			}
     
     
            			}
     
    				});
            }
     
        }
    Mais si j'essaye de suivre le raisonnement que vous me donnez, ça aurait aussi fonctionné si j'avais fait ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void onClick(View v)
    {
     
    "".equals(variableA.getText());
    "".equals(variableB.getText());
    "".equals(variableC.getText());
    "0".equals(variableA.getText());
     
    etc etc

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    L'idée est de contrôler les données au lieu de les utiliser et de voir si ça casse (ce que tu fais avec les try ... catch ici).

    En supposant que les EditText ne peuvent contenir que des chiffres.
    Ainsi, tu ne devrais plus avoir d'exception.

    Si je reprends ton code, ça ferai un :
    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
     
    public void onClick(View v)
    	{
    		boolean wellFilled = areEditTextsWellFilled();
    		if (wellFilled)
    			{
    				// les calculs ...
    			}
    		else
    			{
    				// Signaler quelle est l'erreur
    			}
    	}
     
    private void areEditTextsWellFilled()
    	{
    	boolean wellFilled = false;
     
    	if ((! "".equals(variableA.getText()) && ! Integer.parseInt(variableA.getText()) != 0) || ! "".equals(variableB.getText()) || ! "".equals(variableC.getText()))
    		wellFilled = true;
     
    	return wellFilled;
    	}
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Ok je pense avoir compris, je trouve quand même les try un peu moins tirés par les cheveux. Jvais essayer de garder un max de poil sur la tête

    Merci bien, Résolu

    ( Au fait, je fais comment pour mettre en résolu? )

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Shirase_Akira Voir le message
    ( Au fait, je fais comment pour mettre en résolu? )
    Tu cliques sur le bouton situé en bas de la discussion.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci, je cherchais en haut de page, j'étais pas prêt de trouver

  9. #9
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Les 2 reviennent foncièrement au même.

    C'est juste le sens qui change un peu.
    Avec les exceptions, tu autorises de mauvaises données puis préviens l'utilisateur de ceci.
    Avec les tests, tu n'autorises pas de mauvaises données.
    Les deux ne sont absolument pas opposés et sont même plutôt complémentaires (on ne sait jamais).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  10. #10
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Je crois que quelque part les try sont plus gourmand en ressources.
    Et pour le cas présent je trouve ça relativement sale.
    En plus t'as pas fais le truc classe d'enabled le bouton quand les 3 champs sont correct et de le disabled sinon.

    Il y a des listeners qui peuvent écouter les modifications dans les EditText.

    Après pour l’expérience utilisateur, je ne sais pas lequel est le mieux.
    Qu'est-ce qui est plus chiant entre avoir un message d'erreur qui nous indique qu'on a mal remplit les champs ou un bouton disabled ?
    Keith Flint 1969 - 2019

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 168
    Points : 212
    Points
    212
    Par défaut
    Le mieux serait un Toast

  12. #12
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Si on part par là, le mieux serait une vérification des champs à la perte du focus en faisant un liseré rouge/vert (non-valide/valide) avec le bouton désactivé tant que les champs ne sont pas valides.

    M'enfin là, je pense qu'on part relativement loin par rapport à la demande initiale
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Je crois que quelque part les try sont plus gourmand en ressources.
    Et pour le cas présent je trouve ça relativement sale.
    En plus t'as pas fais le truc classe d'enabled le bouton quand les 3 champs sont correct et de le disabled sinon.

    Il y a des listeners qui peuvent écouter les modifications dans les EditText.

    Après pour l’expérience utilisateur, je ne sais pas lequel est le mieux.
    Qu'est-ce qui est plus chiant entre avoir un message d'erreur qui nous indique qu'on a mal remplit les champs ou un bouton disabled ?
    J'ai pas encore le niveau pour voir si un code est propre ou sale, par contre j'ai essayé de désactiver le bouton quand les champs sont mal ou ne sont pas remplis, mais aucun résultat concluant, j'ai pas trouvé comment faire, j'ai essayé mais sans succès.
    Par contre "l'avantage" avec mon code, c'est que les cases non remplies se remplissent automatiquement avec une valeur par défaut au clic.
    J'vais me repencher sur la question du bouton, ça m'intéresserait vraiment de comprendre comment fonctionne ce comportement

  14. #14
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Normalement, c'est aussi simple que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monBouton.setEnabled(true); // le bouton est cliquable
    monBouton.setEnabled(false); // le bouton n'est pas cliquable + effet grisé si bouton standard
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  15. #15
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Ben là je considère plus propre de tester si c'est equals("") et si le format est bon et ensuite faire l'opération.

    Plutôt que d'essayer directement dans un try.

    Cela dit le try fait gagner beaucoup de temps et dans le cas présent ne doit pas être trop gourmand, donc ça vaut peut être le coup.

    Et si tu veux faire un truc avec des listeners.
    Il faut que la fonction qui est appelé dès que l'utilisateur a fini d'entrer une valeur dans un EditText.

    Regarde tout les EditText.

    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!editText1.equals("") && !editText2.equals("") && !editText3.equals("")){
         // Là aucun des EditText n'est vide
    }
    T'as pu forcer l'utilisateur a n'entrer que des nombres dans les EditText ?
    Keith Flint 1969 - 2019

  16. #16
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a toujours eu deux écoles concernant la gestion des "erreurs"... exceptions ? pas exception ?
    Comme les deux camps se battent depuis près de 30 ans, la bonne réponse doit certainement se trouver entre les deux...

    Dans tous les cas, une exception est un cas "exceptionnel", bref, non attendu par le code appelé....
    On pourrait très bien imaginer laisser la méthode de calcul se viander sur la racine d'un nombre négatif et utiliser l'exception ainsi générer pour afficher "pas de solution".

    Mais je suis un peu comme les autres: Il y a deux parties principales d'un programme: l'UI et le métier... Le passage d'exceptions de l'un à l'autre est toujours compliqué, et les données entrées par l'utilisateur rarement corrects (vilains singes)... Aussi l'UI doit s'assurer de passer des valeurs correctes à la partie métier...
    Donc, par exemple, je serai plus pour: s'assurer coté UI que tous les champs sont remplis (et valides), mais laisser le calcul envoyer une exception sur une racine négative

    Au fait, je conseille de mettre le calcul ailleurs que dans le listener de l'UI... Après tout... qui dit que c'est le bouton qui va lancer le calcul ?
    (on peut imaginer par exemple, vu la grande complexité du calcul, que celui-ci est fait en temps réel à chaque fois qu'une valeur est modifiée dans les TextEdit...).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Ben là je considère plus propre de tester si c'est equals("") et si le format est bon et ensuite faire l'opération.

    Plutôt que d'essayer directement dans un try.

    Cela dit le try fait gagner beaucoup de temps et dans le cas présent ne doit pas être trop gourmand, donc ça vaut peut être le coup.

    Et si tu veux faire un truc avec des listeners.
    Il faut que la fonction qui est appelé dès que l'utilisateur a fini d'entrer une valeur dans un EditText.

    Regarde tout les EditText.

    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!editText1.equals("") && !editText2.equals("") && !editText3.equals("")){
         // Là aucun des EditText n'est vide
    }
    T'as pu forcer l'utilisateur a n'entrer que des nombres dans les EditText ?
    Je suis du même avis, mais pour cette appli le try catch est plus que satisfaisant, par contre je comprends pas bien à quoi sert le "!" dans !editText1.equals("")

    Et je comprends pas non plus ta dernière question. Enfin si tu veux dire qu'il ne peut pas entrer de texte, mais que des nombres, oui, c'est fait dans le layout.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:inputType="numberSigned"

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

Discussions similaires

  1. Résoudre une équation du second degré
    Par Emmanuel Delahaye dans le forum Télécharger
    Réponses: 3
    Dernier message: 04/12/2011, 02h59
  2. Réponses: 2
    Dernier message: 11/08/2011, 15h52
  3. sos solveur Roe pour les équations de Saint Venant
    Par centkilo dans le forum Fortran
    Réponses: 2
    Dernier message: 04/03/2011, 19h27
  4. Virtualisation d'application pour les isoler
    Par Flavien06 dans le forum Virtualisation
    Réponses: 5
    Dernier message: 20/07/2010, 13h42
  5. Visual basic: algo résolvant une équation du second degré
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 05/12/2005, 17h16

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