Создание объекта одного класса в другом классе? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть два класса, и мне интересно, почему я всегда получаю ошибку, когда пытаюсь создать объект класса "Knoten" в методе класса "Graph".

Граф класса

public class Graph
{

    static Knoten[] knotenliste;


        public void punktHinzufuegen(int x, int y){
            for(int i=0;i<Gui.zaehler;i++){
                knotenliste[i]=new Knoten(x,y);

            }
        }
    } 

Класс Knoten:

public class Knoten{

int xPos;
int yPos;

    public Knoten(int x,int y){
       xPos=x;
       yPos=y;
    }


}

Каждый раз, когда я вызываю метод punktHinzufuegen, я получаю сообщение об ошибке.Спасибо за помощь ..

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Ваша проблема очень проста для решения, поэтому я дам краткое объяснение / решение.

Ваша текущая проблема в том, что вы не определяете свой knotenliste ,Вы должны определить это как следующее поле:

private static Knoten[] knotenliste = new Knoten[Gui.zaehler];

Я бы посоветовал вам не использовать статическое значение, но начать работать с фиксированным ArrayList (для индексации точек на графике) или Очередь .Оба из них могут быть найдены в документации Java, если вы прочитали о них.Я бы сделал следующее:

public class Graph {

    private final ArrayList<Knoten> knotenliste = new ArrayList<>(Gui.zaehler);

    public void punktHinzufuegen(int x, int y) {
        for (int i = 0; i < Gui.zaehler; i++) {
            // Keep in mind that the List#add(int index, E element) will 
            // shift all the elements previously in the array to the right.
            knotenliste.add(i, new Knoten(x, y));
        }
    }
}

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

0 голосов
/ 05 июня 2018

Вы не инициализировали свой массив, и я думаю, что вы получаете NullPointerException при добавлении элементов.Вам нужно инициализировать его перед добавлением к нему элементов

static Knoten[] knotenliste = new Knoten[<SOME_INT_VALUE>];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...