Objekt-Arrays - Wie geht es?

MEETyA

Mitglied
Gegeben ist folgendes Programm:

Code:
package points;

public class Main {

    public Main() {
    }
    
    public static void main(String[] args) {
        Value[] wert = new Value[5];
        wert[1].setX(1);
        wert[1].setY(1);
        wert[2].setX(2);
        wert[2].setY(2);
        wert[3].setX(3);
        wert[3].setY(3);
        int i=0;
        while( points.Value.valueNumber >= i ){
            System.out.println("P"+i+": ("+wert[i].getX()+"|"+wert[i].getY()+")");
            i++;
        }
    }
    
}

class Value {

    private float x;
    private float y;
    public static int valueNumber=0;
    
    public void Value() {
        
    }
    
    public void setX(float input) {
        x = input;
        valueNumber++;
    }
    
    public void setY(float input) {
        y = input;
    }
    
    public float getX(){
        return x;
    }
    
    public float getY(){
        return y;
    }
    
}

Anstatt der gewünschten Ausgabe P1: (1|1)... bekomme ich den Fehler:

Code:
Exception in thread "main" java.lang.NullPointerException
        at points.Main.main(Main.java:27)
Java Result: 1

Was mache ich falsch?

Vielen Dank im Vorraus
 
Hallo,

du hast zwar ein Object-Array angelegt, aber du hast keine Objecte angelegt.

Also du musst für jedes Feld im Array noch ein Object anlegen

Code:
Object[] o = Object[2];

o[0] = new Object();

MFG

zEriX
 
Erst sagst du deinem Programm, dass i = 0 ist. Dann gehst du in die While Schleife. Dort soll nun auf wert[0] zugegriffen werden. So sollte es lauten:

Java:
int i=1;
        while( points.Value.valueNumber >= i ){
            System.out.println("P"+i+": ("+wert[i].getX()+"|"+wert[i].getY()+")");
            i++;
        }

edit: achja, wieso deklarierst du eigentlich ein Value der Länge 5, beginnst aber bei 1 und benutzt nur 3 davon? ;)
 
Okay dankeschön das wars :)

Funktionierender Code:

Code:
package points;

public class Main {

    public Main() {
    }
    
    public static void main(String[] args) {
        Value[] wert = new Value[5];
        wert[1] = new Value();
        wert[2] = new Value();
        wert[3] = new Value();
        wert[1].setX(1);
        wert[1].setY(1);
        wert[2].setX(2);
        wert[2].setY(2);
        wert[3].setX(3);
        wert[3].setY(3);
        int i=0;
        while( points.Value.valueNumber > i ){
            i++;
            System.out.println("P"+i+": ("+wert[i].getX()+"|"+wert[i].getY()+")");
        }
    }
    
}

class Value {

    private float x;
    private float y;
    public static int valueNumber=0;
    
    public void Value() {
        
    }
    
    public void setX(float input) {
        x = input;
        valueNumber++;
    }
    
    public void setY(float input) {
        y = input;
    }
    
    public float getX(){
        return x;
    }
    
    public float getY(){
        return y;
    }
    
}
 
Zurück