Error java.lang.NumberFormatException: Invalid double: ""

4

When I run my app, the error appears:

java.lang.NumberFormatException: Invalid double: ""

I do not 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 types only a number and clicks to add the app to and informs that an error occurred, if the user typed the number 1 and the number 2 and then clicking on add the app works normally.

This error started to happen 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 someone has an idea where I'm wrong, I appreciate it.

Att, Juliâncio A Carvalho

    
asked by anonymous 25.05.2016 / 03:44

1 answer

3

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

Solution:

Verify that 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());

Full:

 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));

        }
    });
    
25.05.2016 / 06:51