Java массивы и область видимости - PullRequest
0 голосов
/ 25 февраля 2012

Я пишу приложение, в котором я использую массив в классе.Этот массив объявлен глобально вне области действия любого метода, так что все методы объектов смогут получить доступ к данным.Однако, когда я назначаю объект индексу, этот объект доступен только как часть массива в этом конкретном методе.Любой другой метод, пытающийся прочитать этот индекс массива, получает исключение 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);
}

Это связано с областью действия или из-за того, что я путаю переменные экземпляра и класса?Может ли это быть что-то совершенно другое?

Ошибка, которую я получаю, является исключением нулевого указателя при

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

Благодарен за любую помощь!

1 Ответ

1 голос
/ 25 февраля 2012

В getAccountInfo вы позволяете пользователю вводить число X. Если массив 'cell' в X ранее не задавался с помощью addAccount, accounts[X] равен null и, таким образом, accounts[X].number правильно взрывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...