存储多个字符串时出现Java NullPointerException

时间:2012-11-06 18:17:50

标签: java

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

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

我试着这样做:

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

3 个答案:

答案 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]);
    }
}