0

我想创建一个对象数组。会有很多用户对象,我想将这些用户对象保存在一个数组中。我有一个名为 Data 的类。我尝试并搜索了很多,但找不到解决方案。当用户输入一个新名称时,所有对象的名称都会随着给定名称而变化,最后当我打印所有名称时,它会多次打印最后输入的名称。这是我的代码,对您理解会有很大帮助:

测试类.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是你的Data类的静态字段,比如countand usersname从字段中删除静态修饰符。

于 2013-11-03T10:59:13.630 回答
0

一种解决方案是从数据中的名称字段中删除静态修饰符:

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

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

还要修改你的for循环,因为你会得到一个NullPointerException,从条件中删除equals:

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

首先,您需要更正您的对象结构

您已经定义了一个包含数据类本身的静态数组的数据类

  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 变量。每次获得新输入时递增它并使用 count 变量将新创建的 Object 分配给 Data 数组

于 2013-11-03T11:05:29.413 回答