0

ユーザーに残高、引き出し、送金を提供する銀行のように機能するメインの Java プログラムを作成しました。

import java.util.Scanner;

public class Lab12 {
    public static void main(String[] args)
    {
        //Creating Two BankAccounts
        BankAccount B1 = new BankAccount(1000, "ASU_ACCOUNT_110");
        BankAccount B2 = new BankAccount(500, "ASU_ACCOUNT_100");
        double amount;
        Scanner scan  = new Scanner(System.in);

        //Account Deposit
        System.out.println("Please Enter amount to deposit into ASU_ACCOUNT_110 Account");
        amount = scan.nextDouble();
        if(!B1.deposit(amount))
            System.out.println("Error depositing amount in account. Please enter positive value.");
        else
            System.out.println("Successfully deposited $"+amount+". The current balance is "+B1.getBalance() );

        //Account Withdrawal
        System.out.println("Please Enter the amount you would like to withdraw from ASU_ACCOUNT_110");
        amount = scan.nextDouble();
        if(!B1.withdraw(amount))
            System.out.println("Error withdrawing amount. You are either overdrawing or you have entered a negative value");
        else
            System.out.println("Successfully withdrew $"+amount+". The current balance is "+B1.getBalance());

        //Account Transfer
        System.out.println("Please Enter the amount you would like to transfer from ASU_ACCOUNT_110 to ASU_ACCOUNT_100");
        amount = scan.nextDouble();
        if(!B1.transfer(amount, B2))
        {
            System.out.println("Error transfering amount. You are either overdrawing or you have entered a negative value");
        }
        else
        {
            System.out.println("Successfully transferred $"+amount+".\nThe current balance in ASU_ACCOUNT_110 is "+B1.getBalance());
            System.out.println("The current balance in ASU_ACCOUNT_100 is "+B2.getBalance());
        }

        //Account Display
        System.out.println("\nThe details of the two accounts are:");
        System.out.println("------------------------------------------");
        display(B1);
        System.out.println("------------------------------------------");
        display(B2);
    }

    public static void display(BankAccount B)
    {
        System.out.println("The Account Number is "+B.getAccountNumber());
        System.out.println("The balance is "+B.getBalance());
    }
}

メソッドを持ち、残高を取得して呼び出す 2 番目のクラスを作成しました。

public class BankAccount {

    private String AccountNumber;
    private double balance;

    public BankAccount(double balance, String accountNumber) 
    {
        this.balance = balance;
        this.AccountNumber = accountNumber;
    }

    public boolean deposit(double amount) 
    {
        return true;
    }

    public double getBalance() 
    {
        return balance;
    }

    public boolean withdraw(double amount) 
    {
        return true;
    }

    public boolean transfer(double amount, BankAccount b2) 
    {
        return true;
    }

    public String getAccountNumber() 
    {
        return AccountNumber;
    }
}

問題は、預金、引き出し、送金にマイナスの金額を入力すると、メインクラスに入れたエラーが発生しないことです

何かご意見は?

4

3 に答える 3

2

BankAccount.deposit(double) のどこかで数値が負かどうかをチェックしません。コードが次のように負かどうかを確認する必要があります。

public boolean deposit(double amount) 
{
    if(amount<0)
    {
        return false;
    }else{
        return true;
    }
}
于 2013-04-06T02:34:16.050 に答える
2

BankAccount のメソッドは常に true を返します。そうする実装を提供しない限り、失敗を通知することは期待できません。

例えば:

public boolean withdraw(double amount) 
{
    return true;
}

常にtrue を返すため、失敗を通知することはありません。メソッドが希望どおりに動作するためには、より複雑な動作を追加する必要があります。何かのようなもの:

public boolean withdraw(double amount) 
{  
    //if the withdrawal is positive and does not exceed the balance
    if (amount >= 0 && amount <= balance)
    {
         //remove money and signal success
         balance -= amount;
         return true;
    }
    //if either condition failed, signal failure
    return false;
}

これらのメソッドを実装するのを単に忘れたようです。それか、あなたがプログラミングについて根本的な誤解を持っているかのどちらかです。

于 2013-04-06T02:34:30.540 に答える
0

入金、出金、送金のメソッドは常に true を返します。したがって、エラー メッセージが表示されることはありません。

于 2013-04-06T02:31:58.173 に答える