gpt4 book ai didi

java - 需要后续帮助/建议 ---Java BankAccount 应用程序 - 在通过 switch 语句的情况下重用变量

转载 作者:行者123 更新时间:2023-12-01 14:31:47 40 4
gpt4 key购买 nike

后续问题,需要案例 5 的帮助 - 使用此代码和 joptionpane 显示输出。我如何从 arraylist(database =db/deleted) 中调用对象以获得有意义的结果?我能够显示对象的引用。我正在阅读有关重载 tostring 方法的内容,但我不确定我的方向是否正确?任何帮助或建议表示赞赏!提前致谢。

附注顺便说一句,我应该在回答之前的问题后删除它们还是将它们留在黑板上?

    package bankaccount;

import javax.swing.JOptionPane;

public class BankAccountTest
{
public static void main (String[] args)
{
Database db = new Database();
Database deleted = new Database();
boolean done = false;
while (!done)

{
int activity = IO.getInt("Please choose one of the following:"+
"\n 1 to create new account"+ "\n 2 to delete an account"+
"\n 3 to withdraw from an account"+"\n 4 to deposit to an account"+
"\n 5 to list all customers"+"\n 6 to list all deleted customers"+
"\n 7 to display single account "+"\n 8 to exit this program");

switch(activity)
{

case 1:

//Create new account
String LastName = IO.getString("Please type last name: ");
String FirstName = IO.getString("Please type first name: ");
Name n = new Name (LastName,FirstName);

//Create address object
String street = IO.getString("Please type your address: ");
String city = IO.getString("Please type your city: ");
String state = IO.getString("Please type your state: ");
String zipcode = IO.getString("Please type your zipcode: ");
Address addr = new Address (street,city,state,zipcode);
/* //Create Account number
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(2000000000);
AccountNum accno = new AccountNum(randomInt);
*/ //Create customer object
String accno = IO.getString("Please enter the account number: ");
Customer c = new Customer(n,addr,accno);
//Create bankaccount object
double amt = IO.getDouble("Please type the opening account balance: ");
BankAccount b = new BankAccount(c, amt);
db.add(b);
break;


case 2:

// Delete an account / copy account info to deleted database
String key = IO.getString("Enter account number to delete: ");
db.search(key);
if (db.inlist())
{
deleted.add(db.remove(db.getindex()));
} else
{
//Display not found
IO.notFound();
}
break;


case 3:

// withdraw from an account
key = IO.getString("Enter account number to withdraw from: ");
db.search(key);
if (db.inlist())
{
double amount = IO.getDouble("Enter an amount to withdraw : ");
b.withdraw(amount);
JOptionPane.showMessageDialog(null, "Current balance is: "+b.balance);

} else
{
IO.notFound();
}
break;

案例5:

  //Display single account
if(db.list.isEmpty())
{
String s = "The list is empty";
JTextArea text = new JTextArea(s, 6, 20);
JScrollPane pane = new JScrollPane(text);
JOptionPane.showMessageDialog(null, pane,
"Current Customers", JOptionPane.INFORMATION_MESSAGE);
}

for (int i = 0; i < db.list.size(); i++)
{
// JOptionPane.showMessageDialog(null, " "+db.list.size());
String s = "These exists in the list: ";
JTextArea text = new JTextArea(s, 6, 20);
JScrollPane pane = new JScrollPane(text);
JOptionPane.showMessageDialog(null, pane,
"Current Customers List", JOptionPane.INFORMATION_MESSAGE);
}
break;


case 8:

// exit program
done=true;
break;

default:
JOptionPane.showMessageDialog(null, "Invalid choice, please choose again ",
"ERROR",JOptionPane.ERROR_MESSAGE);
}
}
}
}

类(class)

package bankaccount;

public class BankAccount
{
Customer cust;
double balance;

BankAccount (Customer c,double b)
{
cust = c;
balance = b;
}

void deposit (double amt)
{
balance = balance + amt;
}

void withdraw (double amt)
{
balance = balance - amt;
}

double getbalance ()
{
return balance;
}

Customer getcustomer ()
{
return cust;
}
}

&

package bankaccount;

public class Customer
{
Name name;
Address addr;
String accno;

Customer (Name n, Address addy, String acc)
{
name = n;
addr = addy;
accno = acc;
}

Name getname()
{
return name;
}

Address getAddress()
{
return addr;
}

String getAccountNumber()
{
return accno;
}

void changeAccountNumber(String acc)
{
accno = acc;
}
}

&

package bankaccount;

import java.util.ArrayList;

public class Database
{
int index;
boolean found;
ArrayList<BankAccount> list;
BankAccount acc;

Database()
{
list = new ArrayList<BankAccount>();
}

void add(BankAccount b)
{
list.add(b);
}

BankAccount remove (int i)
{
return list.remove(i);
}

BankAccount getaccount()
{
return acc;
}

ArrayList getlist()
{
return list;
}

int getindex()
{
return index;
}

boolean inlist()
{
return found;
}

void search (String key)
{
found = false;
int i = 0;
//int.length = list.size();

while (i < list.size() && !found)
{ BankAccount b = list.get(i);
if (key.equals(b.getcustomer().accno))
{
acc = b; found = true; index = i;
}
else
{
i++;
}
}
}
}

&

package bankaccount;

public class Address
{
String street;
String city;
String state;
String zipcode;

Address (String str, String cty, String st, String zip)
{
street = str;
city = cty;
state = st;
zipcode = zip;
}

static String getstreet(String street)
{
return street;
}

public String getcity()
{
return city;
}

public String getstate()
{
return state;
}

public String getzip()
{
return zipcode;
}
}

最佳答案

您必须在 switch 子句之外定义变量,否则无法在情况 3 中定义该变量。

编辑

尝试以下操作:

db.getaccount().withdraw(amount);

而不是:

b.withdraw(amount);

通过这一行,您可以从数据库中获取帐户并在其中进行编辑。

关于java - 需要后续帮助/建议 ---Java BankAccount 应用程序 - 在通过 switch 语句的情况下重用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822301/

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