E:AndroidRuntime: FATAL EXCEPTION: main

0 respostas
programaçãoandroidjava
C

Se um editText não for preenchido o APK para de funcionar e retorna o erro

E:AndroidRuntime: FATAL EXCEPTION: main.
Não entendo pois deveria Aparecer as mensagens programadas. Já no NetBeans funciona tranquilamente sem erros.

Erro:

10-31 15:06:54.340 4152-4152/com.wms.www.calccred E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.wms.www.calccred, PID: 4152

java.lang.NumberFormatException: Bad offset/length: offset=0 len=0 in.length=0

at java.math.BigDecimal.(BigDecimal.java:276)

at java.math.BigDecimal.(BigDecimal.java:425)

at com.wms.www.calccred.Consorcio$1.onClick(Consorcio.java:99)

at android.view.View.performClick(View.java:6256)

at android.view.View$PerformClick.run(View.java:24701)

at android.os.Handler.handleCallback(Handler.java:789)

at android.os.Handler.dispatchMessage(Handler.java:98)

at android.os.Looper.loop(Looper.java:164)

at android.app.ActivityThread.main(ActivityThread.java:6541)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Segue o código:

public class Consorcio extends AppCompatActivity {

private EditText edtCota;
private EditText edtPrazo;
private EditText edtReserva;
private EditText edtAdm;
private EditText edtVida;
private Button bVoltar;
private Button btnCalc;

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


    edtCota = (EditText) findViewById(R.id.edtCota);
    edtPrazo = (EditText) findViewById(R.id.edtPrazo);
    edtReserva = (EditText) findViewById(R.id.edtReserva);
    edtAdm = (EditText) findViewById(R.id.edtAdm);
    edtVida = (EditText) findViewById(R.id.edtVida);
    bVoltar = (Button) findViewById(R.id.bVoltar);
    btnCalc = (Button) findViewById(R.id.btnCalc);


    //Evento Botao Calc
    btnCalc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Valores in = new Valores();


           /* BigDecimal cota = new BigDecimal(in.a);
            BigDecimal prazo = new BigDecimal(in.b);
            BigDecimal reserva = new BigDecimal(in.c);
            BigDecimal adm = new BigDecimal(in.d);
            BigDecimal vida = new BigDecimal(in.e);*/


            if (edtCota.getText().equals("")) {

                AlertDialog.Builder janelaBrancoCota = new AlertDialog.Builder(Consorcio.this);
                janelaBrancoCota.setMessage("Digite um valor para a Cota");
                janelaBrancoCota.setNeutralButton("FECHAR", null);
                janelaBrancoCota.show();

            } else if (edtPrazo.getText().equals("")) {

                AlertDialog.Builder janelaBrancoPrazo = new AlertDialog.Builder(Consorcio.this);
                janelaBrancoPrazo.setMessage("Digite um valor para o Prazo");
                janelaBrancoPrazo.setNeutralButton("FECHAR", null);
                janelaBrancoPrazo.show();


            } else if (edtReserva.getText().equals("")) {

                AlertDialog.Builder janelaBrancoReserva = new AlertDialog.Builder(Consorcio.this);
                janelaBrancoReserva.setMessage("Digite um valor para a Reserva");
                janelaBrancoReserva.setNeutralButton("FECHAR", null);
                janelaBrancoReserva.show();

            } else if (edtAdm.getText().equals("")) {

                AlertDialog.Builder janelaBrancoAdm = new AlertDialog.Builder(Consorcio.this);
                janelaBrancoAdm.setMessage("Digite um valor para a Taxa Administrativa");
                janelaBrancoAdm.setNeutralButton("FECHAR", null);
                janelaBrancoAdm.show();

            } else if (edtVida.getText().equals("")) {

                AlertDialog.Builder janelaBrancoVida = new AlertDialog.Builder(Consorcio.this);
                janelaBrancoVida.setMessage("Digite um valor para a Taxa Administrativa");
                janelaBrancoVida.setNeutralButton("FECHAR", null);
                janelaBrancoVida.show();

            } else {

                String z1 = in.a = edtCota.getText().toString();
                String z2 = in.b = edtPrazo.getText().toString();
                String z3 = in.c = edtReserva.getText().toString();
                String z4 = in.d = edtAdm.getText().toString();
                String z5 = in.e = edtVida.getText().toString();

                BigDecimal cota1 = new BigDecimal(z1);
                BigDecimal prazo1 = new BigDecimal(z2);
                BigDecimal reserva1 = new BigDecimal(z3);
                BigDecimal adm1 = new BigDecimal(z4);
                BigDecimal vida1 = new BigDecimal(z5);


                //Calculo dos valores
                if (cota1.compareTo(BigDecimal.ZERO) == 0) {

                    AlertDialog.Builder janelaZeroCota = new AlertDialog.Builder(Consorcio.this);
                    janelaZeroCota.setMessage("A Cota não pode ser 0");
                    janelaZeroCota.setNeutralButton("FECHAR", null);
                    janelaZeroCota.show();

                } else if (prazo1.compareTo(BigDecimal.ZERO) == 0) {

                    AlertDialog.Builder janelaPrazo = new AlertDialog.Builder(Consorcio.this);
                    janelaPrazo.setMessage("O Prazo não pode ser 0");
                    janelaPrazo.setNeutralButton("FECHAR", null);
                    janelaPrazo.show();

                } else if (reserva1.compareTo(BigDecimal.ZERO) == 0) {


                    AlertDialog.Builder janelaReserva = new AlertDialog.Builder(Consorcio.this);
                    janelaReserva.setMessage("A taxa Reserva não pode ser 0");
                    janelaReserva.setNeutralButton("FECHAR", null);
                    janelaReserva.show();

                } else if (adm1.compareTo(BigDecimal.ZERO) == 0) {


                    AlertDialog.Builder janelaAdm = new AlertDialog.Builder(Consorcio.this);
                    janelaAdm.setMessage("A taxa Administrativa não pode ser 0");
                    janelaAdm.setNeutralButton("FECHAR", null);
                    janelaAdm.show();


                } else if (vida1.compareTo(BigDecimal.ZERO) == 0) {


                    AlertDialog.Builder janelaVida = new AlertDialog.Builder(Consorcio.this);
                    janelaVida.setMessage("A taxa do Seguro de Vida não pode ser 0");
                    janelaVida.setNeutralButton("FECHAR", null);
                    janelaVida.show();


                } else {

                    //Formato para exibição de valores
                    DecimalFormat decimal = new DecimalFormat();
                    decimal.applyPattern("R$" + "#,###.00");

                    //Calculo Fundo Comum
                    BigDecimal pc = new BigDecimal("100");
                    BigDecimal percentualMensal = pc.divide(prazo1, 4, RoundingMode.HALF_UP);
                    BigDecimal parcelaMensal = percentualMensal.multiply(cota1);
                    BigDecimal parcelaMensal1 = parcelaMensal.divide(pc);

                    //Calculo Taxa Administrativa
                    BigDecimal a1 = adm1.divide(prazo1, 4, RoundingMode.HALF_UP);
                    BigDecimal parcelaAdm = a1.multiply(cota1);
                    BigDecimal parcelaAdm1 = parcelaAdm.divide(pc);

                    //Calculo Fundo Reserva
                    BigDecimal r1 = reserva1.divide(prazo1, 4, RoundingMode.HALF_UP);
                    BigDecimal parcelaReserva = cota1.multiply(r1);
                    BigDecimal parcelaReserva1 = parcelaReserva.divide(pc);

                    //Calculo Seguro de Vida
                    BigDecimal v1 = vida1.divide(prazo1, 4, RoundingMode.HALF_UP);
                    BigDecimal parcelaVida = cota1.multiply(v1);
                    BigDecimal parceaVida1 = parcelaVida.divide(pc);

                    BigDecimal calculo = parcelaMensal1.add(parcelaAdm1.add(parcelaReserva1.add(parceaVida1)));


                    //Saida de informações para o usuario
                    AlertDialog.Builder janelaResultados = new AlertDialog.Builder(Consorcio.this);
                    janelaResultados.setMessage("Valor parcela :" + decimal.format(calculo));
                    janelaResultados.setNeutralButton("FECHAR", null);
                    janelaResultados.show();
                }


            }
        }
    });

    //Evento botão voltar
    bVoltar.setOnClickListener(new View.OnClickListener()

    {
        public void onClick(View v) {
            Intent voltar = new Intent(Consorcio.this, Home.class);
            startActivity(voltar);
        }
    });

}

}

Criado 31 de outubro de 2017
Respostas 0
Participantes 1