Java数组和作用域

Java数组和作用域,java,arrays,scope,Java,Arrays,Scope,我正在编写一个应用程序,其中我在类中使用数组。此数组在任何方法作用域之外全局声明,以便所有对象方法都能够访问数据。但是,当我将一个对象指定给索引时,该对象只能作为该特定方法中数组的一部分使用。任何其他试图读取数组索引的方法都会获得nullpointerexception 一些代码说明了我的用法: Account[] accounts = new Account[8000]; public void addAccount() { cli.printMessage("Welcome

我正在编写一个应用程序,其中我在类中使用数组。此数组在任何方法作用域之外全局声明,以便所有对象方法都能够访问数据。但是,当我将一个对象指定给索引时,该对象只能作为该特定方法中数组的一部分使用。任何其他试图读取数组索引的方法都会获得nullpointerexception

一些代码说明了我的用法:

Account[] accounts = new Account[8000];


public void addAccount() {


    cli.printMessage("Welcome to the account add wizard.");
    String holdername = cli.getInput(entername);
    int accountnr = Integer.parseInt(cli.getInput(enternr));
    BigDecimal accbalance = new BigDecimal(cli.getInput(enterinitialbalance));

    accounts[accountnr] = new Account(holdername, accountnr, accbalance);
    String accountinfo=accounts[accountnr].number + " " + " " + accounts[accountnr].holder + " " + accounts[accountnr].balance;
    cli.printMessage(accountinfo);

}
添加帐户始终有效,但从此类的同一实例运行时不会出现这种情况:

public void getAccountinfo() {

    int accountnr = Integer.parseInt(cli.getInput(getinfo));
    String accountinfo=accounts[accountnr].number + "" + "" + accounts[accountnr].holder + accounts[accountnr].balance;
    cli.printMessage(accountinfo);
}
这是因为作用域还是因为我混淆了实例和类变量?可能是完全不同的事情吗

我得到的错误是位于的nullpointer异常

        String accountinfo=accounts[accountnr].number + "" + "" + accounts[accountnr].holder + accounts[accountnr].balance;

谢谢你的帮助

getAccountInfo
中,用户可以输入一个数字X。
如果之前未通过
addAccount
设置X处的数组“cell”,则
accounts[X]
null
,因此
accounts[X]。number
正确弹出。

您预计会发生什么以及实际发生什么?应该可以-请展示一个简短但完整的程序来演示问题。(您也应该考虑为变量名使用CAMECASE)。在GETAcQuin()中,AcQueNR有什么价值,您确定调用同一个对象上的第二个方法,并且请求相同的“CuNNR”?范围是在编译时确定的,而不是运行时(可能除非您使用反射)。因此运行时的NullPointerException无法链接到作用域。您是正确的,我发现了错误。该应用程序是一个cli应用程序。当用户输入一些输入并完成他们的“任务”时,我再次调用菜单渲染方法。问题是保存我粘贴的代码的类(帐户管理类)被实例化在该方法中。因此,为每个任务创建一个新的帐户管理对象。将其移动到该类中的全局对象使其能够正常工作。