user1740066
user1740066

Reputation: 141

Static method returning nothing? (trying to return a tostring)

I'm trying to return an object in this static method:

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;
        }

But it returns nothing and I'm not sure how to fix it. As in,

Here's the driver program:

    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);
    }
}

Finally, here is the output:

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

As you can see, it does print the consolidation successful message indicating it goes through the loop correctly, it just isn't returning the account summary.

Upvotes: 3

Views: 156

Answers (2)

Stephen C
Stephen C

Reputation: 719261

In addition to the problems identified by other answers:

  • You don't set the balance in the new account created by consolidate.

  • Using a double as an account number is a bit weird.

  • Using a double for an account balance is incorrect. An account should always hold an exact number of cents, or pennies, or whatever. (Go check your bank statement ... or ask an accountancy student.) And that requires that you use an integer type ... because arithmetic involving floating point types is vulnerable to rounding errors.

  • A method name should start with a lower-case letter; e.g. Consolidate -> consolidate

Upvotes: 1

sdasdadas
sdasdadas

Reputation: 25146

You never actually do anything with the return value:

Account.Consolidate(acct2, acct3);

Upvotes: 5

Related Questions