Problema ao tentar realizar uma conta com numeros negativos

2 respostas Resolvido
B

Estou tentando fazer uma conta colocando números negativos, mas sempre que coloco o sinal “-” da o seguinte erro java.lang.NumberFormatException: For input string: “-” e meu app fecha. Quero realizar contas negativas, alguem sabe como posso resolver esse problema ?

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ViewHolder mViewHolder = new ViewHolder();
    EditText editTextKm;
    EditText perdaTextKm;

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

        editTextKm = this.findViewById(R.id.edit_km);
        perdaTextKm = this.findViewById(R.id.perda_km);

        editTextKm.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                        String valorKm = (editTextKm.getText().toString());
                        if (valorKm.isEmpty()) {
                            perdaTextKm.setText("");
                        } else {
                            double perdaKm = Double.valueOf(valorKm) * (-0.35);
                            perdaTextKm.setText(String.format("%.2f", (perdaKm)));
                        }
                    }
        });

2 Respostas

A
Solucao aceita

Demorou um pouco para eu entender o que realmente ocorria. O problema e muito simples quando você tenta digitar um caracter não numérico por exemplo - (menos), ao tentar fazer o valueOf simplesmente vai quebrar.
Pois está na função afterTextChanged, para resolver esse problema tera de fazer uma validação do que ele está digitando tem números, lembrando que terá de proibir de digitar letras e espaços.

Verificando se contem numeros

Caso contenha algum número em sua string, você deixará o processo seguir em frente.

B

Show, obrigado!!

Criado 24 de dezembro de 2019
Ultima resposta 26 de dez. de 2019
Respostas 2
Participantes 2