Java银行利息/储蓄计算器

时间:2012-11-09 21:59:24

标签: java calculator

我是Java新手,正在尝试创建银行储蓄和利息计算器。我已经创建了基本的计算器,但是在为这个计算器添加了一些新功能后,我似乎搞砸了它,它不再执行以前的任何任务。

我想用这个计算器完成的一些事情: 1.选择您的帐户类型(储蓄,CD或支票)并传递到我的扩展JFrame的帐户对象。

  1. 提示用户提供原始余额,利率和期间长度。将这些值传递给Account对象(这是我无法弄清楚的部分)。

  2. 单击“计算”按钮后打印最终余额。

  3. 询问用户“想要开设新帐户?是/否”如果是,请循环回来。如果不是,请退出。

  4. 我缺乏一些基本的Java知识,这就是我现在被困住的原因。感谢任何帮助!

    Account.java

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Account extends JFrame {
    
    private int period;
    private int balance;
    private int rate;
    private String printstring;
    
    @Override
    public String toString() {
        return String.format("Period: " + period + ", Balance: " + balance);
    }
    
    public int getPeriod() {
        return period;
    }
    
    public void setPeriod(int period) {
        this.period = period;
    }
    
    public int getBalance() {
        return balance;
    }
    
    public void setBalance(int balance) {
        this.balance = balance;
    }
    
    public int getRate() {
        return rate;
    }
    
    public void setRate(int rate) {
        this.rate = rate;
    }
    
    public String getPrintstring() {
        return printstring;
    }
    
    public void setPrintString(String printstring) {
        this.printstring = printstring;
    }
    
    public void calculate() {
        for ( int i = 0; i<period; i++)
    {
        balance = (balance * rate) + balance;
    
    }
    }
    }
    

    Banker.java

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Banker {
    
    // Array for type of bank account
    
    private static void createAndShowGUI() {
    
        // Declare strings for period, balance, rate
        String period;
        String balance;
        String rate;
    
        // Prompt user for input
        period = JOptionPane.showInputDialog(null, "Number of periods (length):");
        balance = JOptionPane.showInputDialog(null, "Beginning balance:");
        rate = JOptionPane.showInputDialog(null, "Interest rate (use decimal, example: .05     = 5%):");
    
        // Make Calculate button
        JButton calculate = new JButton("Calculate");
    
        // Make 3 Labels
        JLabel blabel = new JLabel("Period: " + period);
        JLabel plabel = new JLabel("Balance: " + balance);
        JLabel flabel = new JLabel("Final Balance: " + balance);
    
        // Setup window with flow layout and exit on close
        JFrame frame = new JFrame("Interest Savings Calculator Plus");
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        // Add combo box, calc button and labels
        frame.add(calculate);
        frame.add(plabel);
        frame.add(blabel);
        frame.add(flabel);
        frame.pack();
        frame.setVisible(true);
    
    
        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
    
    String[] accttype = { "Checking", "Savings", "CD" }; // Array of bank acct types
    String input = (String) JOptionPane.showInputDialog(null, "Choose account...",
        "Choose bank account type", JOptionPane.QUESTION_MESSAGE, null,
        accttype, // Array of acct types
        accttype[0]); // First choice
    System.out.println(input);
    
    
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
                createAndShowGUI();
            }
    
    
    
    }
    

2 个答案:

答案 0 :(得分:1)

我只为你提供一般建议......

您正在使用Money,请不要使用float和/或double作为数据类型。

floatdouble类型中,不可能将{(1)或float完全代表0.1(或任何其他10的负幂)。

例如,假设你有1.03欧元而你花了0.42你剩下多少钱?

System.out.println(1.03 - .42); 打印出0.6100000000000001。

解决此问题的正确方法是使用BigDecimal作为数据类型,并且它具有所有方法,如add,divide,...等等。 一个陷阱double是不可改变的,在你进行计算时不要忘记这一点。

答案 1 :(得分:0)

正如您提示输入帐户类型一样,您需要提示并捕获所需值的输入:

String input = JOptionPane.showInputDialog("Question:");

这为您提供了一个您需要转换为数字的字符串:

double value;
try {
  value = Double.parseDouble(input);
} catch (NumberFormatException e) {
  //Handle the exception
}

您可以为所需的所有输入执行此操作。之后将它们传递给您的Account对象。

Account account = new Account();
account.setBalance(value);

我希望你能从那里推断出你的需求!祝你好运。