java 一个方法的银行帐户程序问题
java bankaccount program issue with a method
因此,对于硬件分配,我创建了一个 BankAccount class 和一个 Bank class。它基本上是完整的,除了我在创建一种添加月费的方法时遇到问题。我四处搜索,虽然我发现了大量类似的例子,但没有一个适合我的例子。
这是银行账户 class:
public class BankAccount {
String owner;
int accountNumber;
double balance;
public BankAccount (String name, int acct){
owner = name;
accountNumber = acct;
}
public String toString() {
String str = owner + " owns the account " + accountNumber + " with the balance of " + String.format("$%,.2f", balance);
return str;
}
public double adjust(double amt) {
balance = balance + amt;
return balance;
}
public double getBalance() {
return balance;
}
}
这里是 Bank.java class:
import java.util.Arrays;
public class Bank {
BankAccount[] bAcct;
public Bank() {
//Constructor - will create an array that can hold up to 10 BankAccount objects.
bAcct = new BankAccount[10];
}
public void addAccount(BankAccount a) {
//This method will take a BankAccount object as a param and place it in the next avail entry in array.
for(int i = 0; i < bAcct.length; i++) {
if (bAcct[i] == null){
bAcct[i] = a;
break;
}
}
}
public BankAccount getAccount(int index) {
//will return a BankAccount object given an integer index value as a param
return bAcct[index];
}
public void printAccounts() {
//will display all of the BankAccount objects
for (int i = 0; i < bAcct.length; i++) {
if(bAcct[i] != null) {
System.out.println(bAcct[i]);
}
}
}
public double monthlyFee(double f) {
//will take a double value as a param and apply that value to every BankAccount object
for (int i = 0; i < bAcct.length; i++){
if(bAcct[i] !=null) {
}
}
}
}
和测试class:
public class BankTest
{
/*
* test - set up a bank and add accounts
*/
public static void main(String[] args)
{
// Code to test Bank and BankAccount classes
int errors = 0;
double fee = -2.95;
System.out.println("\nCreate bank1");
Bank bank1 = new Bank();
System.out.println("\nOne account");
BankAccount b1 = new BankAccount("Peter Chang", 3021);
b1.adjust(1000.0);
bank1.addAccount(b1);
bank1.printAccounts();
System.out.println("\nTwo accounts");
BankAccount b2 = new BankAccount("Roddy Piper", 3049);
b2.adjust(2000.0);
bank1.addAccount(b2);
bank1.printAccounts();
System.out.println("\nThree accounts");
BankAccount b3 = new BankAccount("Leeroy Jenkins", 4028);
b3.adjust(3000.0);
bank1.addAccount(b3);
bank1.printAccounts();
System.out.println("\nMonthly Fee");
bank1.monthlyFee(fee);
bank1.printAccounts();
System.out.println("\nErrors:");
if (bank1.getAccount(0).getBalance() != 997.05)
{
errors += 1;
System.out.println("Balance for account at index 0 does not match 7.05");
}
if (bank1.getAccount(1).getBalance() != 1997.05)
{
errors += 1;
System.out.println("Balance for account at index 1 does not match 97.05");
}
if (bank1.getAccount(2).getBalance() != 2997.05)
{
errors += 1;
System.out.println("Balance for account at index 2 does not match 97.05");
}
if (errors == 0)
System.out.println("No errors found!!!");
}
}
我卡在 Bank.java class 中的 monthlyFee 方法上。任何帮助表示赞赏!提前致谢。
类似的东西:
public void monthlyFee(double f) {
//will take a double value as a param and apply that value to every BankAccount object
for (int i = 0; i < bAcct.length; i++){
if(bAcct[i] !=null) {
bAcct[i].adjust(f);
}
}
}
从 monthlyFee 方法中删除了 return,因为您没有使用它并且不清楚您对它的期望 return。
顺便说一下,如果我是你,我会使用 List
and ArrayList
而不是 Array,这样可以省去一些不必要的麻烦。
您可以简单地在循环中的每个帐户上使用您的 adjust
方法,并提供所提供的费用金额。
因此,对于硬件分配,我创建了一个 BankAccount class 和一个 Bank class。它基本上是完整的,除了我在创建一种添加月费的方法时遇到问题。我四处搜索,虽然我发现了大量类似的例子,但没有一个适合我的例子。
这是银行账户 class:
public class BankAccount {
String owner;
int accountNumber;
double balance;
public BankAccount (String name, int acct){
owner = name;
accountNumber = acct;
}
public String toString() {
String str = owner + " owns the account " + accountNumber + " with the balance of " + String.format("$%,.2f", balance);
return str;
}
public double adjust(double amt) {
balance = balance + amt;
return balance;
}
public double getBalance() {
return balance;
}
}
这里是 Bank.java class:
import java.util.Arrays;
public class Bank {
BankAccount[] bAcct;
public Bank() {
//Constructor - will create an array that can hold up to 10 BankAccount objects.
bAcct = new BankAccount[10];
}
public void addAccount(BankAccount a) {
//This method will take a BankAccount object as a param and place it in the next avail entry in array.
for(int i = 0; i < bAcct.length; i++) {
if (bAcct[i] == null){
bAcct[i] = a;
break;
}
}
}
public BankAccount getAccount(int index) {
//will return a BankAccount object given an integer index value as a param
return bAcct[index];
}
public void printAccounts() {
//will display all of the BankAccount objects
for (int i = 0; i < bAcct.length; i++) {
if(bAcct[i] != null) {
System.out.println(bAcct[i]);
}
}
}
public double monthlyFee(double f) {
//will take a double value as a param and apply that value to every BankAccount object
for (int i = 0; i < bAcct.length; i++){
if(bAcct[i] !=null) {
}
}
}
}
和测试class:
public class BankTest
{
/*
* test - set up a bank and add accounts
*/
public static void main(String[] args)
{
// Code to test Bank and BankAccount classes
int errors = 0;
double fee = -2.95;
System.out.println("\nCreate bank1");
Bank bank1 = new Bank();
System.out.println("\nOne account");
BankAccount b1 = new BankAccount("Peter Chang", 3021);
b1.adjust(1000.0);
bank1.addAccount(b1);
bank1.printAccounts();
System.out.println("\nTwo accounts");
BankAccount b2 = new BankAccount("Roddy Piper", 3049);
b2.adjust(2000.0);
bank1.addAccount(b2);
bank1.printAccounts();
System.out.println("\nThree accounts");
BankAccount b3 = new BankAccount("Leeroy Jenkins", 4028);
b3.adjust(3000.0);
bank1.addAccount(b3);
bank1.printAccounts();
System.out.println("\nMonthly Fee");
bank1.monthlyFee(fee);
bank1.printAccounts();
System.out.println("\nErrors:");
if (bank1.getAccount(0).getBalance() != 997.05)
{
errors += 1;
System.out.println("Balance for account at index 0 does not match 7.05");
}
if (bank1.getAccount(1).getBalance() != 1997.05)
{
errors += 1;
System.out.println("Balance for account at index 1 does not match 97.05");
}
if (bank1.getAccount(2).getBalance() != 2997.05)
{
errors += 1;
System.out.println("Balance for account at index 2 does not match 97.05");
}
if (errors == 0)
System.out.println("No errors found!!!");
}
}
我卡在 Bank.java class 中的 monthlyFee 方法上。任何帮助表示赞赏!提前致谢。
类似的东西:
public void monthlyFee(double f) {
//will take a double value as a param and apply that value to every BankAccount object
for (int i = 0; i < bAcct.length; i++){
if(bAcct[i] !=null) {
bAcct[i].adjust(f);
}
}
}
从 monthlyFee 方法中删除了 return,因为您没有使用它并且不清楚您对它的期望 return。
顺便说一下,如果我是你,我会使用 List
and ArrayList
而不是 Array,这样可以省去一些不必要的麻烦。
您可以简单地在循环中的每个帐户上使用您的 adjust
方法,并提供所提供的费用金额。