我正在写一个程序,我迫切需要一些帮助。
我有一个类需要同时跟踪多个对象。
我试着这样做:
public class tracker {
private String[] Name;
private int NameCounter;
public void getName(String name) {
Name[NameCounter] = name;
NameCounter = NameCounter + 1;
}
public static void main(String[] args) {
getName("Name1");
getName("Name2");
System.out.println(Name[1] + " " + Name[2])
}
}
我收到一条错误,指出我有一个NullPointerException。我该怎么办?
答案 0 :(得分:5)
Name
为null,因为您没有实例化数组。
你可以做到
private String[] Name = new String[2];
但是由于数组具有固定长度,如果您认为可能需要更多名称,我建议您在此处使用ArrayList:
public class tracker {
private ArrayList<String> names = new ArrayList<String>(); // please follow naming conventions
public void addName(String name) { // getName is a baaad name for a method that changes a variable
names.add(name);
}
public static void main(String[] args) { // main, not mian
addName("Name1");
addName("Name2");
System.out.println(names.get(0) + " " + names.get(1)) // the second one is at index 1, not 0
}
}
答案 1 :(得分:1)
虽然这与你的问题无关,但我发布了它。 根据Java标准,getName方法更适合命名为setName,因此该方法的名称可以传达正确的用途。
答案 2 :(得分:0)
这应该执行
public class tracker {
private String[] Name = new String[2];
private int NameCounter;
public void getName(String name) {
Name[NameCounter] = name;
NameCounter = NameCounter + 1;
}
public static void main(String[] args) {
tracker t = new tracker();
t.getName("Name1");
t.getName("Name2");
System.out.println(t.Name[0] + " " + t.Name[1]);
}
}