我已经在Java样本项目中找到了一堵砖墙。我在这个项目中的目标是使用用户输入来计算兴趣,以确定使用何种帐户,并根据每种特定帐户类型进行计算。
现在我已经创建了一个工厂方法“Public Account createAccount”。我需要它从用户提示接受字符串参数。告诉我它是检查,储蓄还是CD。现在我遇到了麻烦。我必须将“accttype”的用户值传递给特定于每种帐户类型的新对象。我的问题是我只是不知道该怎么做。我是否必须在工厂方法中实施?我怎样才能传递这些值?提前致谢
Account.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Account implements ActionListener {
JButton calculate;
private int period;
private int balance;
private int fbalance;
private int rate;
private int monthlyFee;
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 int getFbalance() {
return fbalance;
}
public void setFbalance(int fbalance) {
this.fbalance = fbalance;
}
public String getPrintstring() {
return printstring;
}
public void setPrintString(String printstring) {
this.printstring = printstring;
}
public void calculate() {
for ( int i = 0; i<period; i++)
{
fbalance = balance + balance * rate - monthlyFee;
}
}
public void actionPerformed(ActionEvent e) {
calculate();
}
}
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 for account type
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
// 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 2 Labels
JLabel blabel = new JLabel("Period: " + period);
JLabel plabel = new JLabel("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.pack();
frame.setVisible(true);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
public Account createAccount(String type){
}
}
答案 0 :(得分:2)
如果您想对所有三种帐户类型使用Account类,我建议您在Account类中添加一个构造函数,并使用一个变量来保存帐户类型,如下所示:
public class Account implements ActionListener {
...
private String accountType = null;
public Account(String accountType) {
this.accountType = accountType;
}
...
}
然后,您可以在createAccount()方法中创建一个新的Account对象,并按如下方式返回:
public Account createAccount(String type) {
Account account = new Account(type);
return account;
}
然后您可以简单地传入帐户类型(这是您在createAndShowGUI()方法中设置的“输入”变量):
Account account = createAccount(input);
否则,你也可以简单地用getter和setter添加accountType变量,只需创建一个新的Account并调用set方法,但我建议使用一个接受这些值作为参数的构造函数。
由于您可能还希望在Account对象中设置其他变量,您可以在返回的Account对象上调用setter,或者您可以修改createAccount()方法和Account构造函数以接受更多参数和在创建新的Account对象时传递它们。