package lab9;
import java.util.Scanner;
import java.util.Date;
public class AccountManager
{
// the account
private Account account;
// reader for reading user input
private Scanner reader;
private Transaction transaction;
private AccountManager accountmanager;
/**
* Constructor for objects of class AccountManager
*/
public AccountManager(Account account, Transaction transaction, AccountManager accountmanager)
{
this.account = account;
reader = new Scanner(System.in);
this.transaction =transaction;
this.accountmanager=accountmanager;
}
public void start()
{
System.out.println("WELCOME TO THE ACCOUNT MANAGER APPLICATION");
boolean finished = false;
for(int i=0; i<3; i++)
{
// get amount
System.out.print("Transaction amount to add?\n>");
String inputAmount = reader.nextLine();
double amount = Double.parseDouble(inputAmount);
// get type
System.out.print("Transaction type?\n>");
String type = reader.nextLine();
// TO DO: get reference
System.out.print ("Transaction reference?\n>");
// date is today's date
Date date = new Date();
// TO DO: create transaction and add to account
System.out.println("Transaction added");
account.displayTransactions();
// TO DO: display balance
}
}
public static void main(String[] args)
{
Transaction t=new Transaction();
Customer cust = new Customer("Fernando", "Alonso");
Account account = new Account(cust, "12345");
AccountManager accountmanager= new AccountManager (account,t, accountmanager);
// TO DO: create AccountManager object and call start method
}
}
附上我的代码。我正在尝试创建一个AccountManager对象并调用它 开始方法。
但是,我收到一条错误,指出Accountmanager对象可能尚未初始化。
我对此非常困惑;我想
this.accountmanager=accountmanager;
,例如
a=10;
如果这是真的,那么对我来说这表明this.accountmanager = accountmanager会有效吗? (我假设这是不正确的,但只是想提供我的思考过程。)
要解决这个问题,我包括:
Transaction t=new Transaction();
这样就落在了静态方法的范围内。那合法/正确吗?
错误讯息:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
“变量accountmanager可能尚未初始化”
答案 0 :(得分:23)
这是问题所在:
$transpose = array_map(null, ...$result);
您正在声明一个变量,并尝试从该变量中读取,并在同一语句中为其提供初始值。
这是一个更简单的例子,展示它是如何荒谬的:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
您期望int y = 10;
int x = y + x;
的价值结束的是什么?您已经说过它的初始值应该是x
的值加上它的当前值...但它不会 当前值价值,因为你正试图找到它的初始值!
我强烈怀疑你根本不应该有他们的构造函数参数。为什么一个y
需要引用另一个?你应该:
AccountManager
字段accountmanager
构造函数参数将局部变量声明和初始化更改为:
accountmanager
(请注意AccountManager accountManager= new AccountManager(account, t);
中的大写字母M,以遵循Java命名惯例。为了清楚起见,我可能会将accountManager
重命名为t
。)