java.lang.Numberformatexception: Invalid double: ""

Asked

Viewed 577 times

4

While running my app appears error:

java.lang.NumberFormatException: Invalid double: ""

I don’t know what to do.

The error happens when I leave a blank value, for example, the app makes the sum of 2 numbers if the user only enters a number and click add the app to and report that an error has occurred, if the user enters the number 1 and the number 2 and then click on add the app works normally.

This error started happening after I used Numberformat to format the monetary value.

This is the code:

public class MainActivity extends AppCompatActivity {

    EditText valor, quantidade;
    Button btnAdicionar;
    Button btnRemover;
    Button btnNovo;

    double total2 = 0;

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

        valor = (EditText) findViewById(R.id.valor);
        quantidade = (EditText) findViewById(R.id.quantidade);
        btnAdicionar = (Button) findViewById(R.id.btnAdicionar);
        btnRemover = (Button) findViewById(R.id.btnRemover);
        btnNovo = (Button) findViewById(R.id.btnNovo);


        btnAdicionar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double valorProduto = Double.parseDouble(valor.getText().toString());
                double quantidadeProduto = Double.parseDouble(quantidade.getText().toString());
                double total = valorProduto * quantidadeProduto;
                total2 = total2 + total;
                displayMensagem(NumberFormat.getCurrencyInstance().format(total2));
            }
        });

        btnRemover.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double valorProduto = Double.parseDouble(valor.getText().toString());
                double quantidadeProduto = Double.parseDouble(quantidade.getText().toString());
                double total = valorProduto * quantidadeProduto;
                total2 = total2 - total;
                displayMensagem(NumberFormat.getCurrencyInstance().format(total2));

            }
        });

        btnNovo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                total2 = 0;
                displayMensagem(NumberFormat.getCurrencyInstance().format(total2));
            }
        });
    }

    private void displayMensagem(String mensagem) {
        TextView valorTotal = (TextView) findViewById(R.id.precoTotal);
        valorTotal.setText(mensagem);
    }
}

If anyone has any idea where I’m going wrong, I’d really appreciate it.

Att, Juliâncio A Carvalho

1 answer

3


Your mistake is that you are trying to convert something empty into double.

Solution:

Check if the value and quantity field are empty before converting. In the solution below I am setting the variables of type double with 0 and if the fields valor and quantidade are not empty, I do the conversion.

double valorProduto = 0;
double quantidadeProduto =0;

if(valor.getText().toString()!="")
   valorProduto = Double.parseDouble(valor.getText().toString());

if(quantidade.getText().toString()!="")
   quantidadeProduto = Double.parseDouble(quantidade.getText().toString());

Complete:

 btnAdicionar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        double valorProduto = 0;
        double quantidadeProduto =0;

        if(valor.getText().toString()!="")
           valorProduto = Double.parseDouble(valor.getText().toString());

        if(quantidade.getText().toString()!="")
           quantidadeProduto = Double.parseDouble(quantidade.getText().toString());

        double total = valorProduto * quantidadeProduto;
        total2 = total2 + total;
        displayMensagem(NumberFormat.getCurrencyInstance().format(total2));
    }
});

 btnRemover.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            double valorProduto = 0;
            double quantidadeProduto =0;

            if(valor.getText().toString()!="")
               valorProduto = Double.parseDouble(valor.getText().toString());

            if(quantidade.getText().toString()!="")
               quantidadeProduto = Double.parseDouble(quantidade.getText().toString());
            double total = valorProduto * quantidadeProduto;
            total2 = total2 - total;
            displayMensagem(NumberFormat.getCurrencyInstance().format(total2));

        }
    });

Browser other questions tagged

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