2014-01-16 2 views
1

Я начинаю с java. Я пытаюсь создать массив вложенных классов, и это не сработает. В частности, это не позволило мне инициализировать элементы массива после выделения.Массив классов в java

public class Salary { 

class Person { 
    String name; 
    double salary; 
    void init (String n, double s) { 
     name = n; 
     salary = s; 
    } 
} 

public Salary (String args[]) { //the input is coming in pairs: name, salary 

    Person[] people;     //creating the array 
    people = new Person[10];   //allocating 10 elements in array 
    int j = 0; 

    for (int i = 0; i < args.length; i+=2) {  
     people[j].init(args[i], Double.parseDouble(args[i+1]));  //trying to initialize, and that is where it's giving me an error 
     System.out.format("%-15s %,10.2f%n",people[j].name, people[j].salary); 
     j++; 
    } 
} 

public static void main (String args[]) { 
    new Salary(args); 
} 
} 

Спасибо!

ответ

6

people = new Person[10]; только выделяет пространство 10Person объектов, они не создают их.

Вам нужно создать экземпляр объекта и присвоить индекс в массиве, например

people[j] = new Person(); 

Попробуйте взглянуть на Arrays подробности рудных

Вы должны также рассмотреть вопрос об использовании объекты конструктора, а не init метода

people[j] = new Person(args[i], Double.parseDouble(args[i+1])); 

Это, конечно, потребует от вас предоставить совместный nstructor.

+5

Когда MadProgrammer говорит «выделяет пространство», это похоже на то, что вы сказали, я собираюсь построить дом ... здесь. И теперь есть место, много, зарезервированное для дома. Однако этого не существует. Он не был построен. В программировании это означает, что есть место для переменной, физическое местоположение в памяти, но оно еще не создано или «создано». В этом пространстве ничего не было. 'people [j] = new Person()' помещает объект 'Person' в это пространство. – aliteralmind

+0

Большое вам спасибо !!!!! Я буду следовать вашим советам и учиться конструктору! – user3200689

+0

Надеюсь, что это поможет .... – MadProgrammer

Смежные вопросы