Duvida sobre clicar em calcular e o app fechar

7 respostas Resolvido
javaprogramação
E

Depois de um tempo, aprendendo sobre o AndroidStudio, tenho uma duvida, criei uma calculadora que precisa receber valores e fazer o calculo, só que eu queria saber se existe algum codigo que quando eu não digitar nenhum numero e simplismente clicar em calcular, o app não feche.
Tipo o meu aplicativo, esta funcionando bem, só que eu queria corrigir esse erro!

7 Respostas

T

Mostre o código do botão calcular, se possível.

Se nenhum número foi informado e o app fecha ao clicar em calcular, aparentemente está sendo causada uma exceção (exception). Antes de calcular, você precisa verificar se algum valor foi digitado, e não pode calcular se nenhum valor foi digitado.

Abraço.

E

Na verdade eu usei esse botão na função onClick e só selecionei o codigo que ela iria ativar.

public void equação(View v){

int b = Integer.parseInt(val1.getText().toString());
int h = Integer.parseInt(val2.getText().toString());
int res1;

res1=(b*h)/2;

res.setText(“A = (”+b+" * “+h+”) / 2\n " +"A= "+res1);

}

}

R

executa seu projeto e depois clica em run, vai estar la no canto inferior esquerdo. dps mostra o erro aqui no forum.

T

Como eu disse, antes de converter os valores pra inteiro, você precisa verificar se há algum texto nos TextViews (val1 e val2). Se não houver, você não pode fazer parseInt, ou vai ocorrer uma exceção e o app vai fechar. Algo como:

String v1 = val1.getText().toString().trim();
String v2 = val2.getText().toString().trim();

if (v1.equals("") || v2.equals("")){
 // valores estão vazios, aqui você pode emitir um aviso pro usuário
}else{
  float b = Float.parseFloat(v1);
  float h = Float.parseFloat(v2);
  float res1 =  (b * h) / 2;
  res.setText(“A = (”+b+" * “+h+”) / 2\n " +"A= " + res1);
}

Obs: se você vai fazer divisões, provavelmente precisa de float em vez de int. Por isso mudei os tipos para float.

Abraço.

E

valeu amigo, você me lembrou que eu podia ter feito um laço if e fazer uma condição onde se eu não digitar nada , ele emite uma mensangem pedindo para que o usuario escreva algum número no espaço. Valeu msm :smiley:

E

Eu vi que, mudando de int pra float, os resultados inteiros sempre tem .0 depois do resultado (ex.: Resultado = 10.0) . Você saberia como eu posso tirar esse 0 dos valores inteiros?

T
Solucao aceita

Você pode manter os inteiros ou usar DecimalFormat para formatar o valor antes de exibir. Algo como:

//...
float res1 =  (b * h) / 2;
DecimalFormat df = new DecimalFormat("#");
res.setText(A = (+df.format(b)+" * “+df.format(h)+”) / 2\n " +"A= " + df.format(res1));
//...

Abraço.

Criado 6 de julho de 2020
Ultima resposta 6 de jul. de 2020
Respostas 7
Participantes 3