调试java银行帐户程序(1个错误)
线程“main”java.lang中出现异常。错误:未解决的编译问题: 类型数据库中的add(BankAccount)方法不适用于BankAccount.TestBankAccount.main(TestBankAccount.java:92)中的参数(void) 第92行是案例3中的db.add。(.add作为错误加下划线)调试java银行帐户程序(1个错误),java,debugging,Java,Debugging,线程“main”java.lang中出现异常。错误:未解决的编译问题: 类型数据库中的add(BankAccount)方法不适用于BankAccount.TestBankAccount.main(TestBankAccount.java:92)中的参数(void) 第92行是案例3中的db.add。(.add作为错误加下划线) 一揽子银行账户; 导入java.text.DateFormat; 导入java.util.Date; 导入java.text.NumberFormat; 导入javax.
一揽子银行账户;
导入java.text.DateFormat;
导入java.util.Date;
导入java.text.NumberFormat;
导入javax.swing.JOptionPane;
导入javax.swing.JTextArea;
导入javax.swing.JScrollPane;
导入java.util.ArrayList;
公共类TestBankAccount
{
公共静态void main(字符串参数[])
{
Database db=new Database();//为活动帐户创建数据库
数据库关闭=新建数据库();//为非活动帐户创建数据库
DateFormat Df=DateFormat.getDateInstance(DateFormat.LONG);
现在日期=新日期();
NumberFormat nf=NumberFormat.getCurrencyInstance();
布尔完成=假;
而(!完成)
{
int menu=GetData.getInt(“\tUnited Bank of Java\n”+“\t”+Df.format(现在)+”\n”
+“\n请从以下选项中选择:“+”\n1.创建新帐户\n2.更新现有帐户“+”\n3.关闭帐户\n4.查看帐户信息\n5.退出”);
开关(菜单)
{
案例1://创建BankAccount对象并将其存储在数据库中
//创建名称对象
字符串f=GetData.getString(“输入名字”);
字符串l=GetData.getString(“输入姓氏”);
名称n=新名称(f,l);
//创建地址对象
String str=GetData.getString(“输入街道名称”);
String city=GetData.getString(“输入城市”);
String st=GetData.getString(“输入状态”);
String zip=GetData.getString(“输入zip”);
//创建客户对象
地址addr=新地址(str、city、st、zip);
String accNo=GetData.getString(“输入帐号”);
客户c=新客户(n,账号,地址);
//创建BankAccount对象
double amount=GetData.getDouble(“输入第一笔存款”);
银行账户ba=新银行账户(c,金额);
//将BankAccount对象添加到数据库
db.add(ba);
打破
案例2://更新帐户
accNo=GetData.getString(“输入您要更新的帐户的帐号”);
数据库检索(账号);
如果(!db.inList())
showMessageDialog(null,“找不到帐户”);
其他的
{
int option=GetData.getInt(“您想(1)存款,(2)取款吗”);
开关(选件)
{
案例1:
double amt=GetData.getDouble(“输入您想存入的金额”);
BankAccount b=db.getAccount();
b、 存款(金额);
打破
案例2:
double amnt=GetData.getDouble(“输入您要提取的金额”);
BankAccount bnk=db.getAccount();
如果(!bnk.发行效率(amnt))
showMessageDialog(null,“资金不足,无法提取”);
其他的
提取bnk(amnt);
打破
违约:
JOptionPane.showMessageDialog(null,“选择无效。若要返回主菜单,请存款或取款$0”);
打破
}
}
打破
案例3://结帐
accNo=GetData.getString(“Cose账户-请输入账号”);
数据库检索(账号);
如果(!db.inList())
showMessageDialog(null,“找不到帐户”);
其他的
{
BankAccount b=db.getAccount();
int index=db.getIndex();
db.add(db.delete(index));
showMessageDialog(null,“帐户”+accNo+“已关闭”);
}
打破
案例4://查看帐户
int view=GetData.getInt(“您想查看什么信息?\n1.单个帐户\n2.所有活动帐户\n3.所有非活动帐户\n”);
开关(视图)
{
案例1://查看单个帐户
accNo=GetData.getString(“查看–帐户。请输入帐户号”);
数据库检索(账号);
如果(!db.inList())
showMessageDialog(null,“找不到帐户”);
其他的
{
BankAccount bb=db.getAccount();
字符串s=“Customer\t”+bb.getCustomer().getName().getFirst()+“\t”+bb.getAmount();
JOptionPane.showMessageDialog(null,s,“银行账户”+bb.getCustomer().getAccountNumber(),JOptionPane.INFORMATION_消息);
}
打破
案例2://查看所有活动帐户
ArrayList=db.getList();
package BankAccount;
import java.text.DateFormat;
import java.util.Date;
import java.text.NumberFormat;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.util.ArrayList;
public class TestBankAccount
{
public static void main(String args[])
{
Database db = new Database(); // Creating database for active accounts
Database close = new Database(); // Creating database for inactive accounts
DateFormat Df = DateFormat.getDateInstance(DateFormat.LONG);
Date now = new Date();
NumberFormat nf = NumberFormat.getCurrencyInstance();
boolean done = false;
while (!done)
{
int menu = GetData.getInt("\tUnited Bank of Java\n" + "\t" + Df.format(now) + "\n"
+ "\nPlease Choose From the Following:" + "\n1. Create New Account\n2. Update Existing Account Account "+ "\n3. Close an Account\n4. View Account Information\n5. Exit");
switch(menu)
{
case 1: //Creating a BankAccount object and storing it in the database
// Creating Name object
String f = GetData.getString("Enter First Name") ;
String l = GetData.getString("Enter Last Name") ;
Name n = new Name(f,l);
// Creating Address object
String str = GetData.getString("Enter Street Name") ;
String city = GetData.getString("Enter City") ;
String st = GetData.getString("Enter State") ;
String zip = GetData.getString("Enter Zip") ;
// Creating Customer object
Address addr = new Address(str,city,st,zip);
String accNo = GetData.getString("Enter Account Number") ;
Customer c = new Customer(n,accNo,addr);
// Creating BankAccount object
double amount = GetData.getDouble("Enter First Deposit") ;
BankAccount ba = new BankAccount(c, amount);
// Add BankAccount object to the database
db.add(ba);
break;
case 2: //Update Account
accNo = GetData.getString("Enter Account Number of Account you'd like to update") ;
db.search(accNo);
if (!db.inList())
JOptionPane.showMessageDialog(null, "Account not found.");
else
{
int option = GetData.getInt("Would you like to (1) Deposit, (2) Withdraw");
switch(option)
{
case 1:
double amt = GetData.getDouble("Enter amount you'd like to deposit");
BankAccount b = db.getAccount();
b.deposit(amt);
break;
case 2:
double amnt = GetData.getDouble("Enter amount you'd like to withdraw") ;
BankAccount bnk = db.getAccount();
if (!bnk.isSufficient(amnt))
JOptionPane.showMessageDialog(null, "Insufficient funds, withdrawal cannot be done.");
else
bnk.withdraw(amnt);
break;
default:
JOptionPane.showMessageDialog(null, "Invalid selection. To return to main menu, please deposit or withdraw $0");
break;
}
}
break;
case 3: //Close Account
accNo = GetData.getString("Cose account - Please enter Account No.)");
db.search(accNo);
if (!db.inList())
JOptionPane.showMessageDialog(null, "Account not found.");
else
{
BankAccount b = db.getAccount();
int index = db.getIndex();
db.add( db.delete(index) );
JOptionPane.showMessageDialog(null, "The Account " + accNo + " has been closed.");
}
break;
case 4: //View Account
int view = GetData.getInt("What information would you like to view?\n1. Single account\n2. All active accounts\n3. All inactive accounts\n");
switch(view)
{
case 1: // View a single account
accNo = GetData.getString("View – account. Please enter Account No.");
db.search(accNo);
if(!db.inList())
JOptionPane.showMessageDialog(null, "Account not found.");
else
{
BankAccount bb = db.getAccount();
String s = "Customer\t" + bb.getCustomer().getName().getFirst() + "\t" + bb.getAmount() ;
JOptionPane.showMessageDialog(null, s, "Bank Account " + bb.getCustomer().getAccountNumber(), JOptionPane.INFORMATION_MESSAGE);
}
break;
case 2: // View all active accounts
ArrayList list = db.getList();
if(list.isEmpty())
JOptionPane.showMessageDialog(null, "List is empty");
else
{
int i = 0, length = db.getSize();
String s = "";
while(i < length)
{
BankAccount b = (BankAccount)list.get(i);
s = s + "Customer Name: " + b.getCustomer().getName().getFirst() + " " + b.getCustomer().getName().getLast() + "\nAccount number: " + b.getCustomer().getAccountNumber() + "\n"
+ b.getCustomer().getAddress().getStreet() + ", " + b.getCustomer().getAddress().getCity() + ", " + b.getCustomer().getAddress().getState() + ", "
+ b.getCustomer().getAddress().getZip() + "\n" + nf.format(b.getAmount()) +
"\n";
i++;
}
display(s, "Active Accounts", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 3: // View all closed accounts
ArrayList closed = db.getList();
if(closed.isEmpty())
JOptionPane.showMessageDialog(null, "List is empty");
else
{
int i = 0, length = db.getSize();
String s = "";
while(i < length)
{
BankAccount b = (BankAccount)closed.get(i);
s = s + "Name " + b.getCustomer().getName().getFirst() + " " + b.getCustomer().getName().getLast() + "\tAccount number: " + b.getCustomer().getAccountNumber() + "\n";
i++;
}
display(s, "Closed Accounts", JOptionPane.INFORMATION_MESSAGE);
}
break;
default:
JOptionPane.showMessageDialog(null, "Invalid option.");
break;
}// End view
break;
case 5: //Exit
done = true;
break;
default:
JOptionPane.showMessageDialog(null, "Account not found.");
break;
}
}
}
static void display(String s, String heading, int MESSAGE_TYPE)
{
JTextArea text = new JTextArea(s, 20, 30);
JScrollPane pane = new JScrollPane(text);
JOptionPane.showMessageDialog(null, pane, heading, MESSAGE_TYPE);
}
}
package BankAccount;
import java.util.ArrayList;
import java.util.Scanner;
class Database
{
ArrayList<BankAccount> list;
BankAccount ba;
int index;
boolean found;
Database()
{
list = new ArrayList<BankAccount>();
}
void search(String key)
{
found = false;
int i = 0;
while(!found && i < list.size())
{
BankAccount b = list.get(i);
if(b.getCustomer().getAccountNumber().equalsIgnoreCase(key))
{
ba = b;
found = true;
index =i;
}
else
i++;
}
}
void add(BankAccount b) { list.add(b); }
void delete(int i) { list.remove(i); }
int getIndex(){ return index; }
boolean inList(){ return found; }
BankAccount getAccount() { return ba; }
boolean isInList() { return found; }
int size() { return list.size(); }
boolean isEmpty() { return list.isEmpty(); }
public ArrayList getList() {
Scanner readBoard = new Scanner(System.in);
return null;
}
public int getSize() {
Scanner readBoard = new Scanner(System.in);
return 0;
}
}
class Database {
...
void add(BankAccount b) { list.add(b); }
void delete(int i) { list.remove(i); }
...
}
Database db = new Database();
...
db.add( db.delete(index) );