How to calculate two sums with only one button?

Asked

Viewed 387 times

0

I wonder how I can calculate with only one button two different sums, as I did the example in the image.

I have the code this way, but only with 2 numbers. How do I make another calculation simultaneously with the same button?

public void calcular (View v){

        NumberFormat formatter = new DecimalFormat("#0.00");

        EditText resultado1 = (EditText) findViewById(R.id.editText15);
        String stringresultado1 = resultado1.getText().toString();

        EditText resultado2 = (EditText) findViewById(R.id.editText19);
        String stringresultado2 = resultado2.getText().toString();


        double valorresultado1, valorresultado2;


        if(stringresultado1.trim().isEmpty()){valorresultado1 = 0; } 
       else{valorresultado1 = Double.parseDouble(stringresultado1);}

        if(stringresultado2.trim().isEmpty()){valorresultado2 = 0; } 
        else{valorresultado2 = Double.parseDouble(stringresultado2);}
      if (stringresultado1.trim().isEmpty() &&stringresultado2.trim().isEmpty())
        {
        Toast.makeText(getApplicationContext(), "Campos em branco",
        Toast.LENGTH_LONG).show();
        }
        else
        {

            double resu = valorresultado1 + valorresultado2;


            TextView resultado = (TextView) findViewById(R.id.textView32);
            resultado.setText (formatter.format(resu) + "€" );
     }

}

tela da soma

  • @Wéllingthonm.Souza reversed its edition because, despite improving some points of the question, changed a linguistic character of the user, who is probably from Portugal. I recommend reading https://pt.meta.stackoverflow.com/q/3/28595

  • @Articuno, no problem, thanks for the tip :).

  • What are the EditText and TextView of every thing on the screen ? Probably the xml layout will make it clearer

  • Edittext: A and B. Textview: Result. I have the above code, maybe it helps. Here my doubt is for the same button to calculate simultaneously.

  • 1

    @Article In European Portuguese "Liked" remains imperfect past tense in the same way as here in Brazil and having the same denotative sense. The correct form in the two dialects would be "Would like" even in the future of the past.

2 answers

2

You can make a method that is responsible for the calculation, giving you the component ids with the values and then calling this method twice.

public void calcular(View v) {
    calcular(R.id.editText15, R.id.editText19, R.id.editText32);
    calcular(R.id.editText16, R.id.editText20, R.id.editText33);
}

private void calcular(String edit1, String edit2, String viewResultado) {

    NumberFormat formatter = new DecimalFormat("#0.00");

    String entrada1 =
            ((EditText) findViewById(edit1)).getText().toString().trim();

    String entrada2 =
            ((EditText) findViewById(edit2)).getText().toString().trim();

    double valor1 = entrada1.isEmpty() ? 0.0 : Double.parseDouble(entrada1);
    double valor2 = entrada2.isEmpty() ? 0.0 : Double.parseDouble(entrada2);

    if (resultado1.isEmpty() || resultado2.isEmpty()) {
        Toast.makeText(getApplicationContext(), "Campos em branco", Toast.LENGTH_LONG).show();
    } else {
        double soma = valor1 + valor2;
        ((TextView) findViewById(viewResultado)).setText(formatter.format(soma) + "€");
    }
}

Also note that it replaces your && for ||. It must show the message if at least one of the fields is empty, and not only if both are empty.

0


Um... I confess I don’t quite understand what you want to do. But if that’s what I’m thinking, the code below should work (with due changes to the layout elements ID’s to address your problem).

public void calcular (View v){

        NumberFormat formatter = new DecimalFormat("#0.00");

        EditText resultadoA1 = (EditText) findViewById(R.id.editText15);
        String stringResultadoA1 = resultadoA1.getText().toString();

        EditText resultadoB1 = (EditText) findViewById(R.id.editText19);
        String stringResultadoB1 = resultadoB1.getText().toString();

        EditText resultadoA2 = (EditText) findViewById(R.id.editText23);
        String stringResultadoA2 = resultadoA2.getText().toString();

        EditText resultadoB2 = (EditText) findViewById(R.id.editText27);
        String stringResultadoB2 = resultadoB2.getText().toString();


        double valorResultadoA1, valorResultadoB1, valorResultadoA2, valorResultadoB2;


        if(stringResultadoA1.trim().isEmpty()){
            valorResultadoA1 = 0;
        }else{
            valorResultadoA1 = Double.parseDouble(stringResultadoA1);
        }

        if(stringResultadoB1.trim().isEmpty()){
            valorResultadoB1 = 0;
        }else{
            valorResultadoB1 = Double.parseDouble(stringResultadoB1);
        }

        if(stringResultadoA2.trim().isEmpty()){
            valorResultadoA2 = 0;
        }else{
            valorResultadoA2 = Double.parseDouble(stringResultadoA2);
        }

        if(stringResultadoB2.trim().isEmpty()){
            valorResultadoB2 = 0;
        }else{
            valorResultadoB2 = Double.parseDouble(stringResultadoB2);
        }

        if(stringResultadoA1.trim().isEmpty() && stringResultadoB1.trim().isEmpty() && stringResultadoA2.trim().isEmpty() && stringResultadoB2.trim().isEmpty() ){

            Toast.makeText(getApplicationContext(), "Campos em branco", Toast.LENGTH_LONG).show();
        }else{

            double resultado1 = valorResultadoA1 + valorResultadoB1;
            double resultado2 = valorResultadoA2 + valorResultadoB2;

            TextView textView1 = (TextView) findViewById(R.id.textView32);
            TextView textView2 = (TextView) findViewById(R.id.textView33);
            textView1.setText (formatter.format(resultado1) + "€" );
            textView2.setText (formatter.format(resultado2) + "€" );
        }

}
  • I added to the code to calculate the result1 - resultado2, when I run the app on my do-it phoneme the right calculation, I have added to the code to store the numbers as soon as it left the application but when I re-enter the application the result1 is right the resultado2 is right but the resultado3 is equal to the resultado2, you can explain why this happens??

Browser other questions tagged

You are not signed in. Login or sign up in order to post.