Не могу вникнуть в работу простого кода

DuckImMud

В двух словах, проблема в простом (относительно наверно) — есть некий класс Central в котором:

  • Объявляем и инициализируем пару-тройку объектов другого класса Production.
  • Объявляем массив типа Production, в который добавляем раннее созданные объекты.
  • Объявляем пару массивов, в которых будем хранить данные полей этих объектов.

    String[] names; // для поля (имя) каждого из объектов
    int[] speeds; // для поля (скорость) каждого из объектов
    // ну и так далее

В момент попытки инициализировать эти массивы для хранения, получаю NullPointerExeption. Пробовал по разному, но ошибка все равно появляется.

for(int i=0;i

Так вот, кто может пояснить, по возможности не сложно, что как взаимодействует?

Исходники:

package production;
public class Central { //String fName, String pName, int fNum, int pNum,int price, ****** speed private Production goldProd = new Production("Gold mine","gold",0,25,1000,5.0); private Production ironProd = new Production("Iron mine","iron",0,50,500,2.5); private Production stoneProd = new Production("Stone quarry","stone",0,100,200,1.0); private Production sandProd = new Production("Sand quarry","sand",0,250,50,0.75); private Production woodProd = new Production("Sawmill","wood",0,150,75,1.5); private Production[] prodList = new Production[]{goldProd,ironProd,stoneProd,sandProd,woodProd}; private String[] FactNames; private String[] ProdNames; private int[] FactNums; private int[] PNums; private int[] Prices; private ******[] Speeds; public Central(){ begin(); } void begin() { goldProd = new Production("Gold mine","gold",0,25,1000,5.0); ironProd = new Production("Iron mine","iron",0,50,500,2.5); stoneProd = new Production("Stone quarry","stone",0,100,200,1.0); sandProd = new Production("Sand quarry","sand",0,250,50,0.75); woodProd = new Production("Sawmill","wood",0,150,75,1.5); prodList = new Production[]{goldProd,ironProd,stoneProd,sandProd,woodProd}; /* for(int i=0;i
package sandbox;
import production.Central;
public class program { public static void main(String[] args) { Central c= new Central(); c.Info(); }
}
1 ответ

DuckImMud

Так вы массивы не инициализируете.

Здесь вы только объявляете массивы:

String[] names;
int[] speeds;

Для инициализации нужно написать:

names = new String[10];
speeds = new int[10];

licensed under cc by-sa 3.0 with attribution.