[英]Cannot invoke " " because array is null
我需要添加关于 2 个演员的信息,例如他们的姓名、地址和年龄,并且在没有数组的情况下很容易地这样做了,但这是必要的,我不断收到错误消息
“无法调用“TestActor.setName(String)”,因为“actors[0]”在 TestMain.main(TestMain.java:5) 处为空”
这只是我用来测试它的主要测试'''
public class TestMain {
public static void main(String[] args) {
TestActor[] actor = new TestActor[2];
//Actor act1 = new Actor(" ", " ", 0);
actor[0]= ("");
actor[0].setName("Jack Nicholson");
actor[0].setAddress("Miami.");
actor[0].setAge(74);
actor[0].printAct();
}
这是我正在使用的演员类,我需要从中设置信息
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% 确定前进的方向,而可能不会破坏整个事情。
编译器抱怨是因为您没有正确初始化TestActor
对象。 你应该这样做:
actor[0] = new TestActor("Jack Nicholson", "Miami.", 74);
actor[0].printAct();
如果您不想这样做并手动使用 setter,那么您需要在TestActor
定义一个默认构造TestActor
:
public TestActor() { }
那么你应该能够像这样在你的数组中使用它:
actor[0] = new TestActor();
actor[0].setName("Jack Nicholson");
actor[0].setAddress("Miami.");
actor[0].setAge(74);
actor[0].printAct();
当你创建TestActor[] actor = new TestActor[2];
,您正在创建一个引用类型对象的数组。 因此, actor[0]
和actor[1]
指的是 null。 首先创建TestActor
并将对象分配给数组。 喜欢:
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();
您的问题似乎是将 Actor 初始化为空字符串而不是 TestActor 对象:
演员[0] = ("");
而是尝试:
actor[0] = new TestActor("Jack Nicholson", "Miami.", 74);
每个 TestActor 都需要实例化,因此这将实例化 TestActor 并填充您想要的字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.