Iro*_*lan -8 java initialization object
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
}
}
Run Code Online (Sandbox Code Playgroud)
附上我的代码.我正在尝试创建一个AccountManager对象并调用其start方法.
但是,我收到一个错误,指出Accountmanager对象可能尚未初始化.
我很困惑这个; 我想
this.accountmanager=accountmanager;
Run Code Online (Sandbox Code Playgroud)
如
a=10;
Run Code Online (Sandbox Code Playgroud)
如果这是真的,那么对我来说这表明this.accountmanager = accountmanager是有效的吗?(我假设这是不正确的,但只是想提供我的思考过程).
为了解决这个问题,我包括:
Transaction t=new Transaction();
Run Code Online (Sandbox Code Playgroud)
这样就落在了静态方法的范围内.这合法/正确吗?
错误信息:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
Run Code Online (Sandbox Code Playgroud)
"变量accountmanager可能尚未初始化"
Jon*_*eet 23
这就是问题:
AccountManager accountmanager= new AccountManager (account, t, accountmanager);
Run Code Online (Sandbox Code Playgroud)
您正在声明一个变量,并尝试从同一语句中读取该变量,从而为其提供初始值.
这是一个更简单的例子,展示它是如何荒谬的:
int y = 10;
int x = y + x;
Run Code Online (Sandbox Code Playgroud)
你期望什么价值x在那结束?你曾说过其初始值应的值y加上当前值...但它不具有的电流值,因为你想找到它的初始值!
我强烈怀疑你根本不应该有他们的构造函数参数.为什么AccountManager需要引用另一个?你应该:
accountmanager字段accountmanager构造函数参数将局部变量声明和初始化更改为:
AccountManager accountManager= new AccountManager(account, t);
Run Code Online (Sandbox Code Playgroud)
(注意M大写accountManager,遵循Java的命名规则.我可能会重命名t以transaction进行清晰了.)
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |