BigDecimal com valor em branco

19 respostas Resolvido
androidjava
C

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

19 Respostas

W

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!");
}
C

Muito obrigado! Obrigado mesmo bro

C

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

W

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

C
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();
            }
W

Posta a mensagem do log.

C

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

W

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

C

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

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

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

Vc testou o meu ultimo palpite? Fez sentido?

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

C

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

}

}

C

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

C

faz sim mas já havia tentado este metodo

W
Solucao aceita

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>
C

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

W

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”.

C

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

Criado 29 de outubro de 2017
Ultima resposta 31 de out. de 2017
Respostas 19
Participantes 2