Creation d'un formulaire de calcul

Résolu/Fermé
dzavatar - Modifié le 30 oct. 2019 à 11:30
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 7 nov. 2019 à 08:49
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
A voir également:

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
4 nov. 2019 à 16:10
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
1
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));


            }
        });

    }
}
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
30 oct. 2019 à 11:34
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.
0
dzavatar Messages postés 18 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 6 novembre 2019
Modifié le 4 nov. 2019 à 09:15
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 :)
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
4 nov. 2019 à 09:17
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é.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dzavatar Messages postés 18 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 6 novembre 2019
4 nov. 2019 à 13:34
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 :/
0
dzavatar Messages postés 18 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 6 novembre 2019
4 nov. 2019 à 18:57
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 ^^
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
6 nov. 2019 à 09:12
Cool ! S'il n'y a plus de problèmes, merci de passer le topic en "résolu"
0
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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024
6 nov. 2019 à 19:22
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 :/
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
7 nov. 2019 à 08:49
A côté du titre de ta question > route crantée > Marquer comme résolu
(et oui, malheureusement, cela ne se devine pas :/ )
0