Я продолжаю получать эту ошибку:
Exception in thread "main" java.lang.NullPointerException
at Circle.main(Circle.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Я пытаюсь установить атрибуты для первого объекта окружности, но я думаю, что я не могу сделать это в java таким образом?
public class Circle {
private double x,
y,
radius;
public static void main(String args[]) {
// Testing Circles
System.out.println("\nTESTING CIRCLES:");
Circle[] circles = new Circle[2];
Circle circle1 = circles[0]; // Circle 1
// Setting X
circle1.setX(20); // <- Why does this not work and how is this properly done.
}
public void setX(double xVal) {
x = xVal;
}
}
Вы не инициализировали объект Circle
, просто объявили пустой массив, который подходит для хранения объектов окружности. Во время объявления все объекты в массиве равны null
. Вам необходимо инициализировать объекты в массиве, прежде чем вы сможете вызвать на них методы.
Circle[] circles = new Circle[2];
circles[0] = new Circle();
circles[0].setX(20);
Или вы можете выполнить инициализацию и объявление в одной строке следующим образом:
Circle[] circles = new Circle[] { new Circle(), new Circle() };
circles[0].setX(20);
Circle[] circles = new Circle[] { new Circle(), new Circle() };
или лучшеCircle[] circles = { new Circle(), new Circle() };