我想创建一个对象数组。将有许多用户对象,我想将这些用户对象保留在一个数组中。我有一个名为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;
}
}
}
Data.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,电话号码等。有人对我有建议吗?
答案 0 :(得分:1)
因为name
是Data
类的静态字段,例如count
和users
。
从name
字段中删除静态修饰符。
答案 1 :(得分:0)
首先,您需要更正对象结构
您已经定义了一个类Data,其中包含Data Class本身的静态数组
我更喜欢将数据类设为:
class Data {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在testClass中创建一个Data类数组
为每个输入创建新的数据对象,并使用setName将名称分配给新创建的对象
在testClass中维护count变量。每次获得新输入并使用count变量将新创建的Object分配给数据数组时递增它
答案 2 :(得分:0)
一种解决方案是从Data:
中的名称字段中删除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++;
}
同时修改你的for循环,因为你会得到一个NullPointerException,从条件中删除equals:
for(int i =0; i<Data.count; i++){