3

この静的メソッドでオブジェクトを返そうとしています:

public static Account Consolidate(Account acct1, Account acct2){
        String name1 = acct1.getName();
        String name2 = acct2.getName();
        double acctNum1 = acct1.getAcctNumber();
        double acctNum2 = acct2.getAcctNumber();
        double balance1 = acct1.getBalance();
        double balance2 = acct2.getBalance();
        double balance3;
        Account acct3 = new Account(name1);

        if ((name1.equalsIgnoreCase(name2)) &&  (acctNum1 != acctNum2)){
            balance3 = balance1 + balance2;
            acct1.close();
            acct2.close();              
            System.out.println("Consolidation successful!");        
            return (acct3);                     
        }
        else 
             System.out.println("These accounts cannot be consolidated.");          
             return null;
        }

しかし、何も返さず、修正方法がわかりません。のように、

ドライバープログラムは次のとおりです。

    import java.util.Scanner;

public class Consolidates{
    public static void main(String[] args){
    String name1;
    String name2;
    String name3;

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter the name of the first account holder");
    name1 = scan.next();
    System.out.println("Enter the name of the second account holder");
    name2 = scan.next();
    System.out.println("Enter the name of the third account holder");
    name3 = scan.next();
    System.out.println();
    Account acct1 = new Account(100, name1, 333333);
    Account acct2 = new Account(100, name2, 555555);
    Account acct3 = new Account(100, name3, 777777);
    System.out.println(acct1);
    System.out.println(acct2);
    System.out.println(acct3);
    System.out.println();
    System.out.println("Closing account 1...");
    System.out.println();
    acct1.close();  
    System.out.println();
    System.out.println("Attempting to consolidate accounts 2 and 3...");
    Account.Consolidate(acct2, acct3);
    System.out.println();
    System.out.println("Printing original 3 accounts");
    System.out.println(acct1);
    System.out.println(acct2);
    System.out.println(acct3);
    }
}

最後に、出力は次のとおりです。

Enter the name of the first account holder
rick
Enter the name of the second account holder
james
Enter the name of the third account holder
james

Name: rick
Account Number: 333333
Balance: 100.0
Name: james
Account Number: 555555
Balance: 100.0
Name: james
Account Number: 777777
Balance: 100.0

Closing account 1...


Attempting to consolidate accounts 2 and 3...
Consolidation successful!

Printing original 3 accounts
Name: CLOSED
Account Number: 333333
Balance: 0.0
Name: CLOSED
Account Number: 555555
Balance: 0.0
Name: CLOSED
Account Number: 777777
Balance: 0.0

ご覧のとおり、ループを正しく通過したことを示す統合成功メッセージが出力され、アカウントの概要が返されないだけです

4

2 に答える 2

5

戻り値で実際に何もすることはありません。

Account.Consolidate(acct2, acct3);
于 2012-12-17T01:04:52.087 に答える
1

他の回答によって特定された問題に加えて:

  • によって作成された新しいアカウントに残高を設定しませんconsolidate

  • アカウント番号としてを使用するのdoubleは少し奇妙です。

  • doubleアカウントの残高にaを使用するのは正しくありません。アカウントは常に正確なセント数、ペニーなどを保持する必要があります。(銀行の明細書を確認するか、会計の学生に尋ねてください。)そして、浮動小数点型を含む算術は丸め誤差に対して脆弱であるため、整数型を使用する必要があります。

  • メソッド名は小文字で始める必要があります。例Consolidate->consolidate

于 2012-12-17T01:11:40.793 に答える