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配列をインスタンス化しないため、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
   }
}
于 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 に答える