【发布时间】:2018-09-25 14:06:28
【问题描述】:
我正在尝试创建一个银行账户程序,用户可以在其中为储蓄账户输入“s”或“S”账户类型。他们还可以为支票账户输入“c”或“C”。我在让用户输入通过 getter/setter 方法运行然后根据输入在输出中返回字符串“Savings”或“Checking”时遇到问题。
package com.company;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
BankAccount myBank = new BankAccount();
myBank.setAccountType(JOptionPane.showInputDialog("please enter an account type"));
JOptionPane.showMessageDialog(null, "Account Number: " + "\nAccount Type: " + myBank.getAccountType() +"\nMinimum Balance: "+ "\nBalance Before Interest and Fees: " + "\n\nNew Balance:\n");
}
}
BankAccount类
package com.company;
public class BankAccount {
private int accountNumber;
private String accountType;
private double minSavings = 2500;
private double minChecking = 1000;
private double currentBalance;
public BankAccount(){ }
public String getAccountType () {
return this.accountType;
}
public void setAccountType (String please_enter_an_account_type) {
if (accountType == "S" || accountType == "s") {
this.accountType = "Savings";
}
else if (accountType == "C" || accountType == "c") {
this.accountType = "Checking";
}
}
}
【问题讨论】:
-
请添加您遇到的错误。说我有问题根本没有帮助。
-
您应该为帐户类型创建一个枚举。从用户输入到实际类型的转换不应在 setter 中完成,而应接近接收用户输入的逻辑。您的域对象不应该关心它是用户文本输入还是表单下拉列表或其他内容。而在 Java 中,字符串是使用
equals方法进行比较的,而不是使用== -
目前我不一定会遇到错误。我希望 JOptionPane.showMessageDialog 在用户输入“S”、“s”或“C”、“c”后让 Account Type 在其旁边显示“Savings”或“Checking”。
-
设置前请检查条件,然后将最终结果尝试发送到setter方法
-
使用
if(accountType.equalsIgnoreCase( "c" )
标签: java if-statement getter-setter