Назначение значений на ноль будет самой простой практикой.Если вы действительно требовательны, вы можете изменить размер массива, но это будет довольно бессмысленно.Просто держите отдельный счетчик размеров и уменьшайте его каждый раз, когда вы устанавливаете что-либо в null.
Другая причина, по которой вы получаете исключение нулевого указателя, заключается в том, что вы должны учитывать, что происходит при замене значений в вашем массиве.с нулевым, но все еще итерацией по счетчику.Вы будете иметь дыры в массиве после удаления.Первым решением было бы вообще обойти нулевые значения и просто сдвинуть ваш массив вниз (что является довольно дорогой операцией).Второе - изменить ваши методы, чтобы учесть эти нулевые значения.Пример:
public void viewAll() {
String addText = " NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n\n";
int nonNull = 0;
for (int i = 0; i < entry.length; i++) {
if (entry[i] != null) {
addText = addText + entry[i].getInfo() + "\n";
nonNull++;
}</p>
<code> if (nonNull == counter) break;
}
JOptionPane.showMessageDialog(null, new JTextArea(addText));
}
У меня нет компилятора на этом компьютере, поэтому рассмотрим его скорее как псевдо-код.Но идея в том, что счетчик отслеживает только то, сколько ненулевых значений у вас есть в вашей адресной книге, и что эти нулевые значения могут находиться в произвольных местах вашего массива.Я добавил ненулевое целое число в качестве локального счетчика, чтобы отслеживать количество значений, с которыми вы столкнулись, которые не равны нулю (поэтому вы не обязаны проходить всю адресную книгу).Затем я добавил оператор if, чтобы гарантировать, что значение в entry [i] не является нулевым значением (попытка вызвать getInfo () для нулевого значения - это то, что дает вам эту ошибку).Наконец, я добавил оператор if, чтобы разорвать цикл, если вы столкнулись со всеми ненулевыми значениями, которые вы сохранили.Надеюсь это поможет.(Также, возможно, стоит рассмотреть LinkedList, чтобы исключить все нулевые значения).
На самом деле, для простоты, вам, вероятно, гораздо лучше использовать LinkedList, если только вы не обязаны использовать массив, так каквам нужно будет изменить все ваши методы, чтобы учесть пустые места в вашем массиве.Если вы, конечно, знакомы с LinkedLists.