0

オブジェクトの配列を作成したかった。多くのユーザー オブジェクトがあり、これらのユーザー オブジェクトを配列に保持したいと考えています。Data というクラスがあります。色々と調べてみましたが、解決策が見つかりませんでした。ユーザーが新しい名前を入力すると、すべてのオブジェクトの名前が指定された名前で変更され、最後にすべての名前を印刷すると、最後に入力した名前が数回印刷されます。これが私のコードです。理解するのに非常に役立ちます:

testClass.java

public class testClass {

    public static void main(String[] args) {
        mainScreen();
    }

    public static void mainScreen(){    
        Scanner scan = new Scanner(System.in);
        System.out.println("1) Add a new user:");   
        int choice = scan.nextInt();

        switch(choice){
        case 1:
            System.out.println("Enter name:");
            String name = scan.next();
            Data.users[Data.count] = new Data(name);
                mainScreen();
            break;

        case 2:
            for(int i =0; i<=Data.count; i++){
                System.out.println(Data.users[i].name);
            }
            break;
        }   
    }
}

データ.java

public class Data {
    public static Data[] users = new Data[600];
    public static String name;
    public static int count = 0;

    public Data(String name) {
        users[count].name = name;
        count++;
    }   
}

すべてのオブジェクトに一意の名前、ID、電話番号などを持たせたいのですが、何か提案はありますか?

4

3 に答える 3

1

あなたのクラスnameの静的フィールドはandのようなものだからです。フィールドから静的修飾子を削除します。Datacountusersname

于 2013-11-03T10:59:13.630 に答える
0

まず、オブジェクト構造を修正する必要があります

Data クラス自体の静的配列を含むクラス Data を定義しました

  1. 私はデータクラスを次のようにすることを好みます:

    class Data {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
  2. testClass に Data クラスの配列を作成します

  3. 入力ごとに新しいデータ オブジェクトを作成し、setName を使用して新しく作成されたオブジェクトに名前を割り当てます。

  4. testClass で count 変数を維持します。新しい入力を取得するたびにインクリメントし、カウント変数を使用して新しく作成されたオブジェクトをデータ配列に割り当てます

于 2013-11-03T11:05:29.413 に答える
0

1 つの解決策は、Data の name フィールドから static 修飾子を削除することです。

public static Data[] users = new Data[600];
public static int count = 0;
public String name;

public Data(String name) {
     this.name = name;
     Data.count++;
}

NullPointerException が発生するため、 for ループも変更し、条件から equals を削除します。

for(int i =0; i<Data.count; i++){
于 2013-11-03T11:07:07.390 に答える