Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不能调用"&引用;因为数组是空的_Java_Arrays_Intellij Idea_Arraylist - Fatal编程技术网

Java 不能调用"&引用;因为数组是空的

Java 不能调用"&引用;因为数组是空的,java,arrays,intellij-idea,arraylist,Java,Arrays,Intellij Idea,Arraylist,我需要添加关于两个参与者的信息,例如他们的姓名、地址和年龄,并且在没有数组的情况下很容易添加,但这是必要的,我不断地得到错误 无法调用“TestActor.setName(String)”,因为“actors[0]”为空 位于TestMain.main(TestMain.java:5)” 这只是一个我用来测试它的主测试线 ''' 这是我正在使用的actor类,我需要从中设置信息 public class TestActor { private String name; priva

我需要添加关于两个参与者的信息,例如他们的姓名、地址和年龄,并且在没有数组的情况下很容易添加,但这是必要的,我不断地得到错误

无法调用“TestActor.setName(String)”,因为“actors[0]”为空 位于TestMain.main(TestMain.java:5)”

这只是一个我用来测试它的主测试线 '''

这是我正在使用的actor类,我需要从中设置信息

public class TestActor {
    private String name;
    private String address;
    private int age;

    public TestActor(String s, String g, int p) {
        this.name = s;
        this.address = g;
        this.age = p;
    }

    public void setName(String s) {
        name = s;
    }

    public void setAddress(String g) {
        address = g;
    }

    public void printAct() {
        System.out.println("The actor's name is " + name + " and age is " + age + ". They live in " + address);
    }

    public void setAge(int p) {
        age = p;
    }

    public String toString() {
        return "The actor's name is " + name + " and age is " + age + ". They live in " + address;
    }

}

我知道toString没有做任何事情,我只是暂时设置了它。这可能有点混乱,我可能完全走错了方向。我不使用数组就可以相对轻松地完成这项工作,但它们有点难倒我了,我不能100%确定在不破坏整个过程的情况下该怎么做。

编译器正在抱怨,因为您没有正确初始化
测试器
对象。你应该这样做:

actor[0]=新约学家(“杰克·尼科尔森”,“迈阿密”,74);
参与者[0]。printAct();
如果您不想这样做并手动使用setter,则需要在
TestActor
中定义默认构造函数:

publictestactor(){}
然后,您应该能够在阵列中使用它,如下所示:

actor[0]=newtestactor();
演员[0]。集名(“杰克·尼科尔森”);
参与者[0]。设置地址(“迈阿密”);
参与者[0]。设置(74);
参与者[0]。printAct();

当您创建
TestActor[]actor=newtestactor[2],您正在创建引用类型对象的数组。因此,
actor[0]
以及
actor[1]
referenull。首先创建
TestActor
,并将对象分配给数组。比如:

TestActor actorOne = new TestActor("s", "g", 0);
actor[0] = actorOne;


您的问题似乎是将参与者初始化为空字符串而不是TestActor对象:

演员[0]=(“”)

改为尝试:

男演员[0]=新约学家(“杰克·尼科尔森”,“迈阿密”,74)


每个TestActor都需要实例化,这样可以实例化TestActor并填充所需的字段。

您从未将
TestActor
分配给actor[0](或actor[1]),因此它当然是空的。谢谢,这非常有效。这可能是非常基本的,但这真的让我避免了在前进的过程中头部撞击键盘!
TestActor actorOne = new TestActor("s", "g", 0);
actor[0] = actorOne;
TestActor[] actor = new TestActor[2];
actor[0]= new TestActor ("Jack Nicholson", Miami.", 74);
actor[0].printAct();