具有多个类的java中的银行帐户客户端
Posted
技术标签:
【中文标题】具有多个类的java中的银行帐户客户端【英文标题】:bank account client in java with multiple classes 【发布时间】:2012-11-29 16:45:45 【问题描述】:我正在尝试制作一个银行账户程序,但我无法弄清楚如何让我的所有变量对我拥有的每个类都可见,或者如何让我的代码的提款和存款方法可见。谁能看看我的代码并告诉我出了什么问题?我只想要客户端类中的输入和输出。
谢谢
客户端类
public class Client
public static void main(String args[])
Scanner input = new Scanner(System.in);
System.out.println("Enter your Name: ");
String cusName = input.nextLine();
System.out.println("Enter Account Type: ");
String type = input.next();
System.out.println("Enter Initial Balance: ");
int bal = input.nextInt();
BankAccount b1 = new BankAccount(cusName, num, type, bal);
int menu;
System.out.println("Menu");
System.out.println("1. Deposit Amount");
System.out.println("2. Withdraw Amount");
System.out.println("3. Display Information");
System.out.println("4. Exit");
boolean quit = false;
do
System.out.print("Please enter your choice: ");
menu = input.nextInt();
switch (menu)
case 1:
b1.deposit();
break;
case 2:
b1.withdraw();
System.out.println("Current Account Balance=" + Balance);
System.out.print("Enter withdrawal amount:");
amount = input.nextInt();
break;
case 3:
b1.display();
break;
case 4:
quit = true;
break;
while (!quit);
金钱类
public class Money
static int accountNumber, Balance, amount;
Scanner input = new Scanner(System.in);
static String name, actype;
public int deposit()
System.out.print("Enter depost amount:");
amount = input.nextInt();
if (amount < 0)
System.out.println("Invalid");
return 1;
Balance = Balance + amount;
return 0;
int withdraw()
if (Balance < amount)
System.out.println("Not enough funds.");
return 1;
if (amount < 0)
System.out.println("Invalid");
return 1;
Balance = Balance - amount;
return 0;
银行账户类
class BankAccount
Scanner input = new Scanner(System.in);
static String name, actype;
static int bal, amt;
Random randomGenerator = new Random();
int accNo = randomGenerator.nextInt(100);
BankAccount(String name, int accNo, String actype, int bal)
this.name = name;
this.accNo = accNo;
this.actype = actype;
this.bal = bal;
void display()
System.out.println("Name:" + name);
System.out.println("Account No:" + accNo);
System.out.println("Balance:" + bal);
void dbal()
System.out.println("Balance:" + bal);
【问题讨论】:
上周是学生作业,这周好像是银行账户作业 【参考方案1】:将Money
添加到您的BankAccount
并创建一个getter 方法:
class BankAccount
Scanner input = new Scanner(System.in);
static String name, actype;
static int bal, amt;
Random randomGenerator = new Random();
int accNo = randomGenerator.nextInt(100);
Money money;
BankAccount(String name, int accNo, String actype, int bal)
this.name = name;
this.accNo = accNo;
this.actype = actype;
this.bal = bal;
this.money = new Money();
public Money getMoney()
return this.money;
.....
使用bankaccount.getMoney()
调用deposit
和withdraw
作为:
b1.getMoney().deposit();
b1.getMoney().withdraw();
此外,我建议将 Money
类属性设置为例如amount, accntType... non-static 并通过构造函数设置。静态变量与类定义相关联,因此您无法为每个银行帐户维护它们。
【讨论】:
@RickyMcQuesten 如果有帮助,请不要忘记接受答案。【参考方案2】:我不会为你回答这个问题。相反,我将建议您阅读更多有关 Java 编程概念的内容,默认情况下会向您解释。
Here is one on encapsulation, which is the main concept that you're asking about This is a great book on how to write code well, including things like keeping methods short 特别是,您的主要方法应该分成更小的部分 如果您不想购买这本书,请联系stack overflow question that talks about it。如果您不想阅读这些链接中的任何一个,@YogendraSingh 很好地回答了这个问题,请使用该答案。
【讨论】:
谢谢,我想我只是对封装有些困惑。第一个链接帮助我清除了它。 如果您认为这是最好的答案,请随意勾选它;)【参考方案3】:对象的属性不应是静态的,例如您的“名称、actype、bal 和 amt”。另外我认为您的货币类应该存在,并且这些方法可以在银行账户中(您从银行账户存款/取款)。
【讨论】:
以上是关于具有多个类的java中的银行帐户客户端的主要内容,如果未能解决你的问题,请参考以下文章