gpt4 book ai didi

java 银行利息/储蓄计算器

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:58 25 4
gpt4 key购买 nike

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

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

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

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

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

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

帐户.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;

}
}
}

银行家.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();
}



}

最佳答案

我只能给你一个一般性的建议......

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

floatdouble 类型中,不可能将 0.1(或任何其他 10 的负幂)精确地表示为 floatdouble

例如,假设您有 1.03 欧元,花费了 0.42 欧元,您还剩下多少钱?

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

解决这个问题的正确方法是使用 BigDecimal作为一种数据类型,它具有所有的方法,如加、除……等等。有一个陷阱,BigDecimal 是不可变的,当您进行计算时不要忘记这一点。

关于 java 银行利息/储蓄计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com