0

私はJavaが初めてなので、概念と用語があいまいですが、試しています! 文字列のデータを取得して解析し、メイン クラスからアクセスできるメンバー属性を持つオブジェクト (配列) を返すクラスを作成する必要があります。特にスワッピングやソートなどの操作を実行する必要がある場合は、これが 、 、 などpointx[]pointy[]複数のインデックス付き配列を持つよりも優れたソリューションであると読みました。pointz[]

test[0].xということで、test[100].y、 などで main から配列オブジェクトのメンバーにアクセスしたいのですが、 がいらいらしてException in thread "main" java.lang.NullPointerExceptionどう進めればいいのかわかりません。

メインからパースを呼び出す方法は次のとおりです。

parse a = new parse();

parse[] test = a.convert("1 2 3 4 1 2 3 4 1 2 3 4"); // <- ** error here **

System.out.printf("%.2f %.2f %.2f %d\n", test[0].x, test[0].y, test[0].z, test[0].r);

解析クラスは次のとおりです。

public class parse {

    parse[] point = new parse[1000];
    public float x;
    public float y;
    public float z;
    public int r;

    parse() {

    }

    public parse[] convert(String vertices) {

        // parse string vertices -> object

        point[0].x = 10; // <- ** error here **
        point[0].y = 100;
        point[0].z = 50;
        point[0].r = 5;

        return point;
    }
}

Java の学習とプログラミングの楽しみを継続するために、特に私の解析クラスと関連する Java ポインターに関するヘルプを事前に提供していただきありがとうございます。

4

1 に答える 1

1

オブジェクトの配列を作成するとparse、配列自体は空になり、実際にはオブジェクトは含まれず、null 参照のみが含まれます。また、オブジェクト自体を作成して配列に格納する必要があります。

さらに、特定のインスタンスに依存しないため、それ自体がメソッドのローカル変数である必要がある場合point、 your はクラスのメンバーです。parseconvertstatic

次に、次のように変換を呼び出します。

parse[] test = parse.convert("this string not used yet");

System.out.printf("%.2f %.2f %.2f %d\n", test[0].x, test[0].y, test[0].z, test[0].r);

解析クラスは次のとおりです。

public class parse {

    public float x;
    public float y;
    public float z;
    public int r;

    parse() {

    }

    public static parse[] convert(String vertices) {

        // parse string vertices -> object

        parse[] point = new parse[1000];
        point[0] = new parse();
        point[0].x = 10;
        point[0].y = 100;
        point[0].z = 50;
        point[0].r = 5;

        return point;
    }
}
于 2012-06-06T20:47:30.227 に答える