1

我正在编写一个程序,我迫切需要一些帮助。

我有一个类需要同时跟踪多个对象。

我试着这样做:

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。我该怎么办?

4

3 回答 3

5

Name为空,因为您没有实例化数组。

你可以做

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
   }
}
于 2012-11-06T18:18:39.830 回答
1

虽然它与您的问题无关,但我正在发布它。按照 Java 标准,方法 getName 宁可命名为 setName,以便方法名称能够传达正确的目的。

于 2012-11-06T18:31:48.943 回答
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]);
    }
}
于 2012-11-06T18:19:30.490 回答