Creation d'un formulaire de calcul [Résolu]

-
Bonjour,
depuis peu je me suis lancé dans l'idée de me créer une petite application de calcul pour le réglage d"une machine car les formules sont plutôt longue à retenir, et je gagnerai du temps. Je me suis donc lancé doucement dans l'apprentissage de la programmation avec android studio en pensant que ce que je cherchais à faire était plutôt simple mais j'avoues qu’après quelques nuit blanche à fouiller les tuto et autres sur google , je sèche et je n'arrive pas à comprendre le principe.
J'ai réussi à créer des boutons pour passer d'une activité à une autre , mais le formulaire de calcul en lui meme je n'y parviens pas...

Si quelqu'un voudrais bien m'aider à comprendre comment cela fonctionne ?

Voici un exemple d'un calcul que j'ai à faire : (( 150-60)*96.5) /(150-45) = résultat

dans mon xml j'ai donc placé des EditText numerique + 1 bouton et au final une zone de résultat.

Les valeurs que je dois entrer :
longa: 150
longb : 60
stepa: 96.5
longc: 45

bouton = calcul


le retour que je veut afficher:
stepb= resultat



sauf que dans la partie java ou j'ai le plus de mal , je ne parviens pas à écrire le calcul , je rate quelque choses sur la façon de l’écrire car malgré toutes les tentative , les formules sont en erreur, non reconnu.

public class Extrudeur extends AppCompatActivity {
    private Button calcul;


    EditText longa,longb,longc,stepa;
    TextView stepb,calcul1,calcul2,calcul3,calcul4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_extrudeur);

        this.calcul = (Button) findViewById(R.id.calcul);

        longa = (EditText) findViewById(R.id.longa);
        longb = (EditText) findViewById(R.id.longb);
        longc = (EditText) findViewById(R.id.longc);
        stepa = (EditText) findViewById(R.id.stepa);

        calcul1=  longa - longb;
        calcul2= calcul1 / longc;
        ......

        stepb = calcul4;
    }
}


je suis certain que c'est tout simple à faire pourtant , mais je n'ai pas vraiment trouver la réponse dans mes recherches de vraiment concluant depuis 2 jours ... j'ai tenté des "int" aussi , mais rien a faire ...

Se serais vraiment sympa si quelqu'un pouvais m’éclairer sur l’écriture de cette partie , sa m'aiderai a comprendre comment continuer

En vous remerciant d'avance.



Configuration: Windows / Chrome 77.0.3865.120
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
1300
1
Merci
Et bien il est la ton souci... Dans ton XML, tu dis, "lorsque j'appuie sur le bouton
calcula
, je veux appeler la méthode
calcula()
". Sauf que, dans cette même méthode, tu redis "lorsque j'appuie sur le bouton, je veux appeler ce code". Tu vois ? Il faut donc :
- supprimer la notion de onClick dans le xml
- mettre le contenu de ta méthode
calcula()
ailleurs, dans le
onCreate()
par exemple

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 70205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
0
Merci
Alors j'avance un peu ... mais je coince sur l'affichage du resultat ... Quand je clic sur le bouton calculez , la page devient blanche et je reviens sur l'activité principal du début au lieu de rester sur cette activité et d'afficher le resultat ...

public class Extrudeur extends AppCompatActivity {
    private Button calcul;
    private EditText longa,longb,longc,stepa;
    private TextView stepb;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_extrudeur);

        longa = (EditText) findViewById(R.id.longa);
        longb = (EditText) findViewById(R.id.longb);
        longc = (EditText) findViewById(R.id.longc);
        stepa = (EditText) findViewById(R.id.stepa);
        stepb = (TextView) findViewById(R.id.stepb);
        calcul= (Button) findViewById(R.id.calcul);

        calcul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String longanum = longa.getText().toString();
                String longbnum = longb.getText().toString();
                String longcnum = longc.getText().toString();
                String stepanum = stepa.getText().toString();

                Integer calcul1 = Integer.parseInt(longbnum) - Integer.parseInt(longbnum);
                Integer calcul2 = calcul1 * Integer.parseInt(stepanum);

                Integer calcul3 = Integer.parseInt(longbnum) - Integer.parseInt(longcnum);
                Integer resultat = calcul2 / calcul3;

                stepb.setText(Integer.toString(resultat));


            }
        });

    }
}
Commenter la réponse de dzavatar
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
1300
0
Merci
Hello,

Integer calcul1 = Integer.parseInt(longbnum) - Integer.parseInt(longbnum);

ça, ça donne 0, en supposant que le
parseInt
se passe bien. Tu m'avais l'air de plutôt utiliser des
Float
, non ?
N'hésites pas à lancer ton app en debug, à mettre des points d'arrêts (breakpoints) et à voir pas à pas ce qui se passe.
Commenter la réponse de BunoCS
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
6 novembre 2019
0
Merci
Désolé pour le temps de réponse mais j'ai ete pas mal pris ...
Bon par contre le soucis à fini par trouver une solution :p j'ai un peu réécris la partie calcul .. du coup on ne sais jamais , je partage quand meme ma solution , on ne sais jamais ;)

vu que j'ai des parties qui demandais des chiffres décimaux je suis passé par des double plus une réécriture du format final.

Sa commence à rentrer tout doucement ;)

public void calculera(View view){
        final EditText valeuraa = findViewById(R.id.valeuraa);
        final EditText valeurab = findViewById(R.id.valeurab);
        final EditText stepaa = findViewById(R.id.stepaa);
        final TextView att3 = findViewById(R.id.att3);
        Button calculera= findViewById(R.id.calculera);

        calculera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                double valeur1num = ParseDouble(valeuraa.getText().toString()) ;
                double valeur2num = ParseDouble(valeurab.getText().toString());
                double stepnum = ParseDouble(stepaa.getText().toString());

                double calcul1 = valeur1num * stepnum;
                double stepfin = calcul1 / valeur2num;

                if (valeur1num != 0) {
                    android.icu.text.DecimalFormat resultatfinal= new android.icu.text.DecimalFormat("#.##");
                    att3.setText("");
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    //AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(this,), R.style.AlertDialogStyle);
                    builder.setTitle(getString(R.string.Stepcalculator_les_axes));
                    builder.setMessage("Step : " + resultatfinal.format(stepfin));
                    builder.setPositiveButton(android.R.string.ok, null);
                    builder.show();
                }
                else
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setTitle(R.string.Stepcalculator_les_axes);
                    builder.setMessage(R.string.tout_les_champs);
                    builder.setPositiveButton("ok", null);
                    builder.show();

                }


Par contre il me reste un tout petit soucis ... une fois mes champs remplis , je dois au moins appuyer 2 fois sur le bouton calculer pour que la réponse s'affiche... une idée du pourquoi ???

Merci en tout cas d'avoir répondu :)
BunoCS
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
1300 -
Cool, ça ! Un souci résiduel ? ça arrive ;)

Quand est-ce que tu appelles ta méthodes
calculera()
? Si tu t'appelles sur le clic du bouton, il est là ton souci.

Note : quand tu ajoutes les balises code, penses à indiquer que c'est du Java, on va gagner en lisibilité.
Commenter la réponse de dzavatar
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
6 novembre 2019
0
Merci
Désolé mais je ne comprends pas bien la question , du coup je ne sais quoi répondre ...
J'ai dans mon fragment pour cette exemple la ... 3 textview à remplir et ensuite le bouton ...
Je vois par contre que dans le xml du bouton , l'id du onclick est souligné en rouge. au cas ou la lettre en fin de mot calcul est une indication pour moi pour quel calcul sa touche...

<Button
        android:id="@+id/calculera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="40dp"
        android:onClick="calculera"
        android:layout_marginEnd="8dp"
        android:background="@drawable/color_btn2"
        android:text="@string/calculer"
        android:ems="11"
       app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/stepaa" />


En sois c'est plus par soucis de détails qu'autre choses car dans l’ensemble tout fonctionne. L'appli tourne bien et j'ai pas encore eu de retour comme quoi cela était dérangeant.

Deso pour le code , je n'avais pas capté qu'il y avait un choix de language :/
Commenter la réponse de dzavatar
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
6 novembre 2019
0
Merci
Ha oui ok , je vois oui la du coup , c'est un peu plus clair
du coup oui la effectivement je n'ai plus cette effet de latence en double clic ... ^^

Un grand merci à toi pour tes lumières ^^
BunoCS
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
1300 -
Cool ! S'il n'y a plus de problèmes, merci de passer le topic en "résolu"
dzavatar
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
6 novembre 2019
> BunoCS
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
-
je n'aurais pas été contre :p mais je n'en ai apparemment pas la possibilité :/ pas de bouton , pas d'option me laissant se choix :/
BunoCS
Messages postés
14667
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 novembre 2019
1300 -
A côté du titre de ta question > route crantée > Marquer comme résolu
(et oui, malheureusement, cela ne se devine pas :/ )
Commenter la réponse de dzavatar