0

我是 Java 新手,所以概念和术语很模糊,但我正在尝试!我需要创建一个类,该类将获取字符串中的数据,对其进行解析并返回一个具有可以从主类访问的成员属性的对象(数组)。我读过这比拥有多个索引数组(如pointx[], pointy[],pointz[]等)更好的解决方案,尤其是在您需要执行交换或排序等操作时。

所以,我想用 , 等从 main 访问数组对象的成员test[0].xtest[100].y但是,我很沮丧地得到了一个Exception in thread "main" java.lang.NullPointerException,我不明白如何继续。

这是我从 main 调用 parse 的方式:

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对象数组时,数组本身是空的,实际上不包含任何对象,只有空引用。您还需要自己创建对象并将它们存储在数组中。

此外,当它应该是方法的局部变量时,您point是类的成员,它本身应该是,因为它不依赖于特定实例。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 回答