Reputation: 141
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
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
Reputation: 25146
You never actually do anything with the return value:
Account.Consolidate(acct2, acct3);
Upvotes: 5