Java 创建银行计划
我几乎完成了一项任务。我正在创建一个银行项目,我几乎完成了所有的事情。我一直坚持的部分是交易部分。我必须创建一个函数Java 创建银行计划,java,Java,我几乎完成了一项任务。我正在创建一个银行项目,我几乎完成了所有的事情。我一直坚持的部分是交易部分。我必须创建一个函数public String getTransactionInfo(int n),它返回银行帐户的最后n笔交易。我似乎无法理解这一部分。我有一个变量private int numOfTransactions,我尝试将它合并到函数中,但没有成功。这就是我试过的 public String gettransactionInfo(int n) { numOfTransactions
public String getTransactionInfo(int n)
,它返回银行帐户的最后n笔交易。我似乎无法理解这一部分。我有一个变量private int numOfTransactions
,我尝试将它合并到函数中,但没有成功。这就是我试过的
public String gettransactionInfo(int n)
{
numOfTransactions = n;
return n;
}
那是行不通的。无法确定如何返回这是一个字符串。有什么想法吗
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Bank myBank = new Bank();
int user_choice = 2;
do {
//display menu to user
//ask user for his choice and validate it (make sure it is between 1 and 6)
System.out.println();
System.out.println("1) Open a new bank account");
System.out.println("2) Deposit to a bank account");
System.out.println("3) Withdraw to bank account");
System.out.println("4) Print short account information");
System.out.println("5) Print the detailed account information including last transactions");
System.out.println("6) Quit");
System.out.println();
System.out.print("Enter choice [1-6]: ");
user_choice = s.nextInt();
switch (user_choice) {
case 1: System.out.println("Enter a customer name");
String cn = s.next();
System.out.println("Enter a opening balance");
double d = s.nextDouble();
System.out.println("Account was created and it has the following number: " + myBank.openNewAccount(cn, d));
break;
case 2: System.out.println("Enter a account number");
int an = s.nextInt();
System.out.println("Enter a deposit amount");
double da = s.nextDouble();
myBank.depositTo(an, da);
break;
case 3: System.out.println("Enter a account number");
int acn = s.nextInt();
System.out.println("Enter a withdraw amount");
double wa = s.nextDouble();
myBank.withdrawFrom(acn, wa);
break;
case 4: System.out.println("Enter a account number");
int anum = s.nextInt();
myBank.printAccountInfo(anum);
break;
//case 5: ... break;
}
}
while (user_choice != '6');
}
static class Bank {
private BankAccount[] accounts; // all the bank accounts at this bank
private int numOfAccounts; // the number of bank accounts at this bank
// Constructor: A new Bank object initially doesn’t contain any accounts.
public Bank() {
accounts = new BankAccount[100];
numOfAccounts = 0;
}
// Creates a new bank account using the customer name and the opening balance given as parameters
// and returns the account number of this new account. It also adds this account into the account list
// of the Bank calling object.
public int openNewAccount(String customerName, double openingBalance) {
BankAccount b = new BankAccount(customerName, openingBalance);
accounts[numOfAccounts] = b;
numOfAccounts++;
return b.getAccountNum();
}
// Withdraws the given amount from the account whose account number is given. If the account is
// not available at the bank, it should print a message.
public void withdrawFrom(int accountNum, double amount) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
accounts[i].withdraw(amount);
System.out.println("Amount withdrawn successfully");
return;
}
}
System.out.println("Account number not found.");
}
// Deposits the given amount to the account whose account number is given. If the account is not
// available at the bank, it should print a message.
public void depositTo(int accountNum, double amount) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
accounts[i].deposit(amount);
System.out.println("Amount deposited successfully");
return;
}
}
System.out.println("Account number not found.");
}
// Prints the account number, the customer name and the balance of the bank account whose
// account number is given. If the account is not available at the bank, it should print a message.
public void printAccountInfo(int accountNum) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
return;
}
}
System.out.println("Account number not found.");
}
// Prints the account number, the customer number and the balance of the bank account whose
// account number is given, together with last n transactions on that account. If the account is not
// available at the bank, it should print a message.
public void printAccountInfo(int accountNum, int n) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
System.out.println(accounts[i].getTransactionInfo(n));
return;
}
}
System.out.println("Account number not found.");
}
}
static class BankAccount{
private int accountNum;
private String customerName;
private double balance;
private double[] transactions;
private int numOfTransactions;
private static int noOfAccounts=0;
public String getAccountInfo(){
return "Account number: " + accountNum + "\nCustomer Name: " + customerName + "\nBalance:" + balance +"\n";
}
public String getTransactionInfo(int n)
{
numOfTransactions = n;
return n;
}
public BankAccount(String abc, double xyz){
customerName = abc;
balance = xyz;
noOfAccounts ++;
accountNum = noOfAccounts;
transactions = new double[100];
transactions[0] = balance;
numOfTransactions = 1;
}
public int getAccountNum(){
return accountNum;
}
public void deposit(double amount){
if (amount<=0) {
System.out.println("Amount to be deposited should be positive");
} else {
balance = balance + amount;
transactions[numOfTransactions] = amount;
numOfTransactions++;
}
}
public void withdraw(double amount)
{
if (amount<=0){
System.out.println("Amount to be withdrawn should be positive");
}
else
{
if (balance < amount) {
System.out.println("Insufficient balance");
} else {
balance = balance - amount;
transactions[numOfTransactions] = amount;
numOfTransactions++;
}
}
}
}//end of class
}
import java.util.Scanner;
公共类BankApp{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
银行myBank=新银行();
int user_choice=2;
做{
//向用户显示菜单
//询问用户的选择并验证它(确保它介于1和6之间)
System.out.println();
System.out.println(“1)开立新的银行账户”);
系统输出打印(“2)存入银行账户”);
系统输出打印(“3)提取到银行账户”;
System.out.println(“4)打印短期账户信息”);
System.out.println(“5)打印详细的账户信息,包括最近的交易”);
系统输出打印(“6)退出”);
System.out.println();
系统输出打印(“输入选项[1-6]:”;
user_choice=s.nextInt();
开关(用户选择){
案例1:System.out.println(“输入客户名称”);
字符串cn=s.next();
系统输出打印项次(“输入期初余额”);
双d=s.nextDouble();
System.out.println(“账户已创建,其编号如下:“+myBank.openNewAccount(cn,d));
打破
案例2:System.out.println(“输入帐号”);
int an=s.nextInt();
System.out.println(“输入存款金额”);
双da=s.nextDouble();
我的银行存款给(安,da);
打破
案例3:System.out.println(“输入帐号”);
int acn=s.nextInt();
System.out.println(“输入提取金额”);
双wa=s.nextDouble();
myBank.提款(华盛顿州acn);
打破
案例4:System.out.println(“输入帐号”);
int anum=s.nextInt();
myBank.printAccountInfo(anum);
打破
//案例5:……断裂;
}
}
while(用户选择!=“6”);
}
静态类库{
私人银行账户[]账户;//此银行的所有银行账户
private int numOfAccounts;//此银行的银行帐户数
//构造函数:新的银行对象最初不包含任何帐户。
公共银行(){
账户=新银行账户[100];
numOfAccounts=0;
}
//使用给定的客户名称和期初余额作为参数创建新的银行帐户
//和返回此新帐户的帐户号。它还将此帐户添加到帐户列表中
//银行调用对象的名称。
public int openNewAccount(字符串customerName,双重openingBalance){
银行账户b=新银行账户(客户名称、期初余额);
账户[numOfAccounts]=b;
NUMOF++;
返回b.getAccountNum();
}
//从给定帐号的帐户中提取给定金额。如果该帐户为
//在银行不可用,它应该打印一条消息。
公共作废取款(int accountNum,双倍金额){
对于(int i=0;i将整数转换为字符串:
String out = Integer.toString(n);
如果希望以字符串形式返回事务数,而不是整数(存储为整数),则需要将整数转换为字符串
在Java中,您可以通过以下方式执行此操作:
Integer.toString(numOfTransactions)
旁注:出于好奇,在你的程序中,你为什么要这样做
public String gettransactionInfo(int n)
{
numOfTransactions = n;
return n;
}
这是低效和错误的,因为您正在将numberOfTransactions设置为n值。按照惯例,该功能放在setter方法中,而不是getter方法中,这是您的实现应该做的
理想情况下,它应该是:
public String gettransactionInfo()
{
return Integer.toString(numOfTransactions);
}
编辑:
根据注释,正确的做法是从事务数组返回一个索引,对应于索引n
其中,在本例中,事务数组应为字符串数组
编辑2:
在使用单独的字符串数组的情况下,将按如下方式更新它(取决于事务):
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Bank myBank = new Bank();
int user_choice = 2;
do {
//display menu to user
//ask user for his choice and validate it (make sure it is between 1 and 6)
System.out.println();
System.out.println("1) Open a new bank account");
System.out.println("2) Deposit to a bank account");
System.out.println("3) Withdraw to bank account");
System.out.println("4) Print short account information");
System.out.println("5) Print the detailed account information including last transactions");
System.out.println("6) Quit");
System.out.println();
System.out.print("Enter choice [1-6]: ");
user_choice = s.nextInt();
switch (user_choice) {
case 1: System.out.println("Enter a customer name");
String cn = s.next();
System.out.println("Enter a opening balance");
double d = s.nextDouble();
System.out.println("Account was created and it has the following number: " + myBank.openNewAccount(cn, d));
break;
case 2: System.out.println("Enter a account number");
int an = s.nextInt();
System.out.println("Enter a deposit amount");
double da = s.nextDouble();
myBank.depositTo(an, da);
break;
case 3: System.out.println("Enter a account number");
int acn = s.nextInt();
System.out.println("Enter a withdraw amount");
double wa = s.nextDouble();
myBank.withdrawFrom(acn, wa);
break;
case 4: System.out.println("Enter a account number");
int anum = s.nextInt();
myBank.printAccountInfo(anum);
break;
case 5: System.out.println("Enter a account number");
anum = s.nextInt();
myBank.printTransactionInfo(anum);
break;
default: System.out.println("Invalid option. Please try again.");
}
}
while (user_choice != '6');
}
static class Bank {
private BankAccount[] accounts; // all the bank accounts at this bank
private int numOfAccounts; // the number of bank accounts at this bank
//Constructor: A new Bank object initially doesn’t contain any accounts.
public Bank() {
accounts = new BankAccount[100];
numOfAccounts = 0;
}
// Creates a new bank account using the customer name and the opening balance given as parameters
// and returns the account number of this new account. It also adds this account into the account list
// of the Bank calling object.
public int openNewAccount(String customerName, double openingBalance) {
BankAccount b = new BankAccount(customerName, openingBalance);
accounts[numOfAccounts] = b;
numOfAccounts++;
return b.getAccountNum();
}
// Withdraws the given amount from the account whose account number is given. If the account is
// not available at the bank, it should print a message.
public void withdrawFrom(int accountNum, double amount) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
accounts[i].withdraw(amount);
System.out.println("Amount withdrawn successfully");
return;
}
}
System.out.println("Account number not found.");
}
// Deposits the given amount to the account whose account number is given. If the account is not
// available at the bank, it should print a message.
public void depositTo(int accountNum, double amount) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
accounts[i].deposit(amount);
System.out.println("Amount deposited successfully");
return;
}
}
System.out.println("Account number not found.");
}
// Prints the account number, the customer name and the balance of the bank account whose
// account number is given. If the account is not available at the bank, it should print a message.
public void printAccountInfo(int accountNum) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
return;
}
}
System.out.println("Account number not found.");
}
public void printTransactionInfo(int accountNum) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
System.out.println("Last transaction: " + accounts[i].getTransactionInfo(accounts[i].getNumberOfTransactions()-1));
return;
}
}
System.out.println("Account number not found.");
}
// Prints the account number, the customer number and the balance of the bank account whose
// account number is given, together with last n transactions on that account. If the account is not
// available at the bank, it should print a message.
public void printAccountInfo(int accountNum, int n) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
System.out.println(accounts[i].getTransactionInfo(n));
return;
}
}
System.out.println("Account number not found.");
}
}
static class BankAccount{
private int accountNum;
private String customerName;
private double balance;
private double[] transactions;
private String[] transactionsSummary;
private int numOfTransactions;
private static int noOfAccounts=0;
public String getAccountInfo(){
return "Account number: " + accountNum + "\nCustomer Name: " + customerName + "\nBalance:" + balance +"\n";
}
public String getTransactionInfo(int n)
{
String transaction = transactionsSummary[n];
if (transaction == null) {
return "No transaction exists with that number.";
}
else {
return transaction;
}
}
public BankAccount(String abc, double xyz){
customerName = abc;
balance = xyz;
noOfAccounts ++;
accountNum = noOfAccounts;
transactions = new double[100];
transactionsSummary = new String[100];
transactions[0] = balance;
transactionsSummary[0] = "A balance of : $" + Double.toString(balance) + " was deposited.";
numOfTransactions = 1;
}
public int getAccountNum(){
return accountNum;
}
public int getNumberOfTransactions() {
return numOfTransactions;
}
public void deposit(double amount){
if (amount<=0) {
System.out.println("Amount to be deposited should be positive");
} else {
balance = balance + amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was deposited.";
numOfTransactions++;
}
}
public void withdraw(double amount)
{
if (amount<=0){
System.out.println("Amount to be withdrawn should be positive");
}
else
{
if (balance < amount) {
System.out.println("Insufficient balance");
} else {
balance = balance - amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was withdrawn.";
numOfTransactions++;
}
}
}
}//end of class
}
import java.util.Scanner;
公共类BankApp{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
银行myBank=新银行();
int user_choice=2;
做{
//向用户显示菜单
//询问用户的选择并验证它(确保它介于1和6之间)
System.out.println();
System.out.println(“1)开立新的银行账户”);
系统输出打印(“2)存入银行账户”);
系统输出打印(“3)提取到银行账户”;
System.out.println(“4)打印短期账户信息”);
System.out.println(“5)打印详细的账户信息,包括最近的交易”);
系统输出打印(“6)退出”);
System.out.println();
系统输出打印(“输入选项[1-6]:”;
user_choice=s.nextInt();
开关(用户选择){
案例1:System.out.println(“输入客户名称”);
字符串cn=s.next();
系统输出打印项次(“输入期初余额”);
双d=s.nextDouble();
System.out.println(“账户已创建,其编号如下:“+myBank.openNewAccount(cn,d));
打破
案例2:System.out.println(“输入账户
public String gettransactionInfo(int n)
{
numOfTransactions = n;
return n;
}
transInfo[0] = "A deposited 30K"
transInfo[1] = "B withdrew 20K"
transInfo[2] = "C deposited 5k"
public String gettransactionInfo(int n)
{
//Traverse the "transactions" array in *reverse* order
//In For loop start with transactions.length, and decrement by 1 "n" times
// Append the transaction amount to a String
// Return the string.
}