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

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.