BigDecimal com valor em branco

favorita
Esta pergunta é uma duplicata exata de:
Valor em branco java 1 resposta
Tenho um código aonde objetos BigDecimais recebem valores de jTextFields que são preenchidos pelo user para o calculo, sendo que se o user digitar 0 em qualquer TextField aparece uma mensagem de erro que não é aceito valores 0. O que preciso é inserir algo que verifique também se o user deixou o campo em branco. Segue a parte do código

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

    BigDecimal cota = new BigDecimal(jTextField1.getText());
    BigDecimal prazo = new BigDecimal(jTextField2.getText());
    BigDecimal reserva = new BigDecimal(jTextField3.getText());
    BigDecimal adm = new BigDecimal(jTextField4.getText());



    DecimalFormat decimal = new DecimalFormat();
    decimal.applyPattern("#,###.00");



    if(cota.compareTo(BigDecimal.ZERO)==0){

       jLabel5.setText("Os valores não podem ser >0<");

Se vc passar uma string vazia pro constructor do BigDecimal ele vai lançar uma exceção, então vc poderia fazer algo como:

BigDecimal cota = null;
BigDecimal prazo = null;
BigDecimal reserva = null;
BigDecimal adm = null;

try {
    cota = new BigDecimal(jTextField1.getText());
    prazo = new BigDecimal(jTextField2.getText());
    reserva = new BigDecimal(jTextField3.getText());
    adm = new BigDecimal(jTextField4.getText());

} catch (NumberFormatException e) {
    jLabel5.setText("Os valores não podem estar vazios!");
}
2 curtidas

Muito obrigado! Obrigado mesmo bro

1 curtida

Só uma dúvida. Funcionou perfeitamente no netBeans mas no AndroidStudio e o APK também não funcionou. Aparece uma mensagem que o APP parou de funcionar

Como tá seu código em Android? Que mensagem apareceu nos logs?

BigDecimal cota = null;
BigDecimal prazo = null;
BigDecimal reserva = null;
BigDecimal adm = null;
BigDecimal vida = null;
try{
cota = new BigDecimal(edtCota.getText().toString());
prazo = new BigDecimal(edtPrazo.getText().toString());
reserva = new BigDecimal(edtReserva.getText().toString());
adm = new BigDecimal(edtAdm.getText().toString());
vida = new BigDecimal(edtVida.getText().toString());
}catch(NumberFormatException erro){

                AlertDialog.Builder janelaVazio = new AlertDialog.Builder(Consorcio.this);
                janelaVazio.setMessage("Preencha todos os campos");
                janelaVazio.setNeutralButton("FECHAR", null);
                janelaVazio.show();
            }

Posta a mensagem do log.

30/10/2017
19:52 Executing tasks: [:app:assembleDebug]

19:52 Gradle build finished in 8s 909ms

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:53 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:54 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:55 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:55 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:55 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:55 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:55 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:56 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:56 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:56 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:56 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:56 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:57 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:57 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:57 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:57 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:57 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:58 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:58 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:58 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:58 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 00000000

19:58 Emulator: 0000002c

19:58 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:59 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000001c

19:59 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000024

19:59 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000020

19:59 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 000000000000002c

19:59 Emulator: qemu-system-i386.exe: goldfish_battery_read: Bad offset 0000000000000028

19:59 Emulator: Process finished with exit code 0

Essa não é a mensagem do logcat, né? De qualquer maneira parece haver um problema com o emulador.

No NetBeans funciona mas vi que reporta um erro no terminal

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Home.jButton1ActionPerformed(Home.java:158)
at Home.access$000(Home.java:17)
at Home$1.actionPerformed(Home.java:51)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

É difícil saber o que tá acontecendo sem conhecer o código ou ver as mensagens que aparecerão, então eu só posso supor. Dito isso…

[1]
No Android Studio há várias telas que exibem mensagens, a que vc mostrou da primeira vez parece ser da tela “0: Messages”. Ela não é tão útil pra saber o motivo pelo qual seu app tá quebrando, pois mostra o que aconteceu no processo de build apenas.

A mensagem que eu queria era aquela contida na tela “6: Logcat”. Ali está tudo o que acontece durante a execução do seu app.

[2]
Pensei que o problema poderia ser no seu código que abre a caixa de diálogo, mas fiz um teste aqui (apenas substitui seu Consorcio.this por apeans this) e funcionou bem.

[3]
Meu último palpite é: vc não está tratando os erros direito.

Veja bem, após o bloco catch ser executado, seu programa continua a rodar normamente após ele. O que vc acha que será impresso no trecho a seguir?

BigDecimal cota = null;

try {
    cota = new BigDecimal("");
} catch (NumberFormatException e) {
    System.out.println("Os valores não podem estar vazios!");
}

System.out.println("O número é: " + cota);

O resultado será:

Os valores não podem estar vazios!
O número é: null

Agora imagine uma situação pior:

BigDecimal n1 = null;
BigDecimal n2 = null;

try {
    n1 = new BigDecimal("");
    n2 = new BigDecimal("");
} catch (NumberFormatException e) {
    System.out.println("Os valores não podem estar vazios!");
}

System.out.println( n1.add(n2) );

O resultado será um NullPointerException:

Os valores não podem estar vazios!
Exception in thread "main" java.lang.NullPointerException
    at com.wldomiciano.Program.main(Program.java:23)

Pra corrigir, vc teria que criar alguma forma de fazer o código mostrar a mensagem e quando a pessoa fechar a caixa de diálogo, ele volta a pedir os dados necessários. Fiz um exemplo bobo:

BigDecimal n1 = null;
BigDecimal n2 = null;

Scanner scan = new Scanner(System.in);

while ( n1 == null || n2 == null ) {
    try {
        System.out.print("N1: ");
        n1 = new BigDecimal( scan.nextLine() );
        System.out.print("N2: ");
        n2 = new BigDecimal( scan.nextLine() );
    } catch (NumberFormatException e) {
        System.out.println("Os valores não podem estar vazios!");
    }
}

System.out.println( n1.add(n2) );

Desculpe minha inexperiência encontrei o log do erro em questão

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)

Vc testou o meu ultimo palpite? Fez sentido?

Sua Activity é muito grande? Teria como postar ela toda?

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


                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 {
                    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 R$:" + 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);
        }
    });

}

}

Ele buga quando se deixa um campo em branco. Já no NetBeans funciona tranquilamente

faz sim mas já havia tentado este metodo

Tentei fazer testes aqui com seu código. Tive que simplificar e excluir várias coisas pois há classes que vc não passou e há o arquivo de layout que faltou também.

Exclui a maioria das coisas. Deixei apenas o EditText “edtCota” e o Button “btnCalc”. Mas enfim… acredito que o seu problema seja nas parte em que vc faz isso:

if ( edtCota.getText().equals("") ) { /* ... */ }

Vc está tentando comparar um Editable (que é o que o getText() retorna) com uma String vazia.

O correto é:

if ( edtCota.getText().toString().equals("") ) { /* ... */ }

Faça essa correção em todos os lugares que vc usa o equals("").

Caso não resolva, faz o seguinte:

  • Crie um novo projeto e faça como eu, coloque apenas um botão e um campo de texto e implemente sua lógica ali. Assim é mais facil de testar.

  • Caso não resolva, poste o código todo, com todas as classes e o arquivo de layout só pra facilitar pra quem for ajudar.

Segue o código que usei pra testar:


public class Consorcio extends AppCompatActivity {
    private EditText edtCota;
    private Button btnCalc;

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

        edtCota = (EditText) findViewById(R.id.edtCota);
        btnCalc = (Button) findViewById(R.id.btnCalc);

        btnCalc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (edtCota.getText().toString().equals("")) {
                    AlertDialog.Builder janelaBrancoCota = new AlertDialog.Builder(Consorcio.this);
                    janelaBrancoCota.setMessage("Digite um valor para a Cota");
                    janelaBrancoCota.setNeutralButton("FECHAR", null);
                    janelaBrancoCota.show();
                } else {
                    String z1 = edtCota.getText().toString();
                    BigDecimal cota1 = new BigDecimal(z1);

                    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 {
                        DecimalFormat decimal = new DecimalFormat();
                        decimal.applyPattern("R$" + "#,###.00");

                        AlertDialog.Builder janelaResultados = new AlertDialog.Builder(Consorcio.this);
                        janelaResultados.setMessage("Valor parcela R$:" + decimal.format(123));
                        janelaResultados.setNeutralButton("FECHAR", null);
                        janelaResultados.show();
                    }
                }
            }
        });
    }
}

O layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <EditText
        android:id="@+id/edtCota"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btnCalc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Botão" />
</LinearLayout>
1 curtida

vou testar, obrigado pela força. Mas estou encucado até agora, no NetBeas funcionou sem erros, se de tudo não der certo recriarei o projeto com as dicas passadas. Igual eu falei quando se insere os valores nas editText funciona perfeitamente, mas só dá pau quando se deixa uma sem preencher e aperta calcular

1 curtida

Sim, eu observei isso. Ele tava parando quando deixava em branco, mas funcionou perfeitamente quando coloquei o toString().equals("") como falei acima. Contudo, ele continua dando erro se vc inserir algo que não seja um número tipo “hello”.

Segui sua lógica e tudo funcionou. Quase uma semana quebrando cabeça com isso, Muito Obrigado Bro!!!

1 curtida