Como criar um sistema para calculo de poupança?

Então galera,

estou quebrando a cabeça em um exercício onde preciso criar um sistema que calcule o rendimento de acordo com os valores passados no JTextField (ainda não fiz a formula de calculo), porém está dando o seguinte erro ao executar o programa:

Exception in thread “main” java.lang.NumberFormatException: empty String
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:549)
at com.ap.Poupex.(Poupex.java:40)
at com.ap.test.main(test.java:8)

Segue o código :

package com.ap;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Poupex extends JFrame {

public Poupex() {

	//JFrame
	setTitle("Poupex");
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setLocationRelativeTo(null);
	setSize(600,400);
	setResizable(false);
	
	
	//JPanel
	JPanel P = new JPanel();
	P.setBackground(Color.gray);
    P.setLayout(null);
    
    
    
    JLabel juroMes = new JLabel("Juros ao mês%: ");
    juroMes.setBounds(40,40,100,40);
    JLabel NumAnos = new JLabel("Número de anos: ");
    NumAnos.setBounds(40,80,100,40);
    JLabel Depmensal = new JLabel("Deposito mensal: ");
    Depmensal.setBounds(40,120,140,40);
    JLabel Tpoup = new JLabel("Total poupado R$: ");
    Tpoup.setBounds(40,160,140,40);

    JTextField t1 = new JTextField();
    t1.setBounds(160, 40, 200, 30);
    double valor1 = Double.parseDouble(t1.getText());

    JTextField t2 = new JTextField();
    t2.setBounds(160, 80, 200, 30);
    int valor2 = (int) Double.parseDouble(t2.getText());

    JTextField t3 = new JTextField();
    t3.setBounds(160, 120, 200, 30);
    double valor3 = Double.parseDouble(t3.getText());

    
    JButton ok = new JButton("OK");
    ok.setBounds(380, 260, 150, 40);


        add(P);
    P.add(juroMes);
    P.add(NumAnos);
    P.add(Depmensal);
    P.add(Tpoup);
    P.add(ok);
    P.add(t1);
    P.add(t2);
    P.add(t3);
    

}

}

qual a linha 40?

e o erro dá quando você tenta colocar um valor ou simplesmente não roda?

Na linha 40 do arquivo Poupex.java você está fazendo um Double.parseDouble de uma String vazia.

1 curtida

é que o valor só será preenchido depois que o programa for executado e o valor foi digitado dentro do TextField, não sei como implementar neste sentido.

o erro ocorre no parseDouble que passa uma empty String, meu problema é que eu preciso armazenar o valor digitado dentro do JTextField quando o programa ja for executado, e este erro nao me deixa executar o programa

Você acabou de instanciar o JTextField, não vai ter nada digitado dentro dele.
Você não pôs um botão OK na tela?
Então, calcula só quando clicar nesse botão.

Exemplo:

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Poupex extends JFrame {

    private JTextField txtJurosMes;
    private JTextField txtNumeroAnos;
    private JTextField txtDepositoMensal;
    private JLabel labelTotalPoupado;

    public Poupex() {

        // JFrame
        setTitle("Poupex");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setSize(600, 400);
        setResizable(false);

        // JPanel
        JPanel P = new JPanel();
        P.setBackground(Color.gray);
        P.setLayout(null);

        JLabel juroMes = new JLabel("Juros ao mês%: ");
        juroMes.setBounds(40, 40, 100, 40);
        JLabel NumAnos = new JLabel("Número de anos: ");
        NumAnos.setBounds(40, 80, 100, 40);
        JLabel Depmensal = new JLabel("Deposito mensal: ");
        Depmensal.setBounds(40, 120, 140, 40);
        labelTotalPoupado = new JLabel("Total poupado R$: ");
        labelTotalPoupado.setBounds(40, 160, 140, 40);

        txtJurosMes = new JTextField();
        txtJurosMes.setBounds(160, 40, 200, 30);

        txtNumeroAnos = new JTextField();
        txtNumeroAnos.setBounds(160, 80, 200, 30);

        txtDepositoMensal = new JTextField();
        txtDepositoMensal.setBounds(160, 120, 200, 30);

        JButton ok = new JButton("OK");
        ok.addActionListener(event -> clicouNoBotaoOk());
        ok.setBounds(380, 260, 150, 40);

        add(P);
        P.add(juroMes);
        P.add(NumAnos);
        P.add(Depmensal);
        P.add(labelTotalPoupado);
        P.add(ok);
        P.add(txtJurosMes);
        P.add(txtNumeroAnos);
        P.add(txtDepositoMensal);

    }

    private void clicouNoBotaoOk() {
        double jurosMes = Double.parseDouble(txtJurosMes.getText());
        int anos = Integer.parseInt(txtNumeroAnos.getText());
        double depositoMensal = Double.parseDouble(txtDepositoMensal.getText());

        double totalPoupado = /* aqui você faz seu cálculo */;
        labelTotalPoupado.setText(String.format("Total poupado R$: %.2f", totalPoupado));
    }
}
1 curtida

Obrigado mais uma vez pela ajuda!! desta forma que você mostrou consegui implementar e fazer o calculo.

1 curtida