#java
#java
Вопрос:
Я довольно новичок в Java, и мне трудно понять, как исправить это исключение нулевого указателя, которое меня беспокоит.
Я знаю, где возникает проблема, и я знаю, что такое исключение нулевого указателя, но я понятия не имею, как я собираюсь заставить свою программу работать.
Вот фрагмент кода, в котором возникает проблема:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Account[] atm = new Account[10];
for (int i = 0; i < 10; i ){
atm[i].setId(i);
atm[i].setBalance(100.00);
}
Как я уже сказал, я знаю, что это происходит потому, что объекты в atm[] имеют значение null, но я не уверен, как решить проблему.
Я уверен, что это какая-то глупая ошибка, потому что такие ошибки я совершаю регулярно, но любая помощь, которую вы, ребята, можете оказать, сделает мой день.
Спасибо!
Ответ №1:
Весь ваш массив равен нулю! помните, что массивы никогда не инициализируются автоматически в java, если только они не являются массивами целых чисел, чисел с плавающей запятой, двойных значений или логических значений.
Scanner input = new Scanner//System.in.Scanner;
Account[] atm = new Account[10];
for (int i = 0; i < 10; i ){
**atm[i] = new Account();**
atm[i].setId(i);
atm[i].setBalance(100.00);
}
Когда вы объявляете массивы, содержащие объекты, читайте это как: «Я создаю массив, который будет содержать объекты ‘x'». (правильно), а затем приступить к созданию экземпляров этих объектов
…в отличие от…
«Я создаю массив с объектами ‘x’ в нем». (неверно), поскольку там еще нет никаких объектов, потому что они не были созданы.
Комментарии:
1. Или, возможно, лучший способ подумать об этом: массивы всегда инициализируются по умолчанию в Java, а инициализатор всегда эквивалентен 0-заполнению: 0, 0.0,
false
, и т.д.null
2. Большое вам спасибо! Это первая практика с Java-массивами, которая у меня была, я совершенно не знал об этом маленьком лакомом кусочке! Я не позволю этому повториться =)