Java 对象数组只包含最后一个对象
我用Java编写了一个notebook类,其中包含notebook 3的属性,要求用户输入它们,然后它包含一个函数来显示它们 第二个类notebookArray声明了上面声明的notebook类型的数组。问题是,在我读取了许多元素并希望显示它们之后,数组的每个元素都包含上次读取的属性 代码如下: 笔记本类 notebookArray.classJava 对象数组只包含最后一个对象,java,arrays,object,Java,Arrays,Object,我用Java编写了一个notebook类,其中包含notebook 3的属性,要求用户输入它们,然后它包含一个函数来显示它们 第二个类notebookArray声明了上面声明的notebook类型的数组。问题是,在我读取了许多元素并希望显示它们之后,数组的每个元素都包含上次读取的属性 代码如下: 笔记本类 notebookArray.class 谢谢你的帮助 您的问题是笔记本类中的静态成员: 删除static关键字,因为您希望每个笔记本实例对这些成员具有不同的值 您的readOne和showOn
谢谢你的帮助 您的问题是笔记本类中的静态成员: 删除static关键字,因为您希望每个笔记本实例对这些成员具有不同的值
您的readOne和showOne方法也不应该是静态的,因为它们应该与非静态成员一起工作。您的问题是notebook类中的静态成员: 删除static关键字,因为您希望每个笔记本实例对这些成员具有不同的值
您的方法readOne和showOne也不应该是静态的,因为它们应该与非静态成员一起工作。您已经在类中创建了静态变量。这些都是问题的根源。将其更改为正态变量
static String colour;
static String company;
static String model;
与
您已经在类中创建了静态变量。这些都是问题的根源。将其更改为正态变量
static String colour;
static String company;
static String model;
与
在notebookArray中,您有一个静态笔记本对象:
你不断地重新设置并添加到你的ArrayList中;因此,它们都是相同的:
for(int i=0;i<n;i++)
{
a=new notebook();
a.readOne();
arrayOfNotebooks.add(a);
}
正如其他人所说,笔记本的成员和方法也不应该是静态的;这也会导致您看到的问题。在notebookArray中,您有一个静态笔记本对象:
你不断地重新设置并添加到你的ArrayList中;因此,它们都是相同的:
for(int i=0;i<n;i++)
{
a=new notebook();
a.readOne();
arrayOfNotebooks.add(a);
}
正如其他人所说,笔记本的成员和方法也不应该是静态的;这也会导致您看到的问题。欢迎使用堆栈溢出。请在下次发布之前花点时间格式化问题中的代码-如果您的代码尚未格式化,我建议使用IDE为您格式化。然后确保您的代码在堆栈溢出帖子中看起来相同:欢迎来到堆栈溢出。请在下次发布之前花点时间格式化问题中的代码-如果您的代码尚未格式化,我建议使用IDE为您格式化。然后确保你的代码在堆栈溢出帖子中看起来是一样的:有趣的是,它与静态笔记本a一起工作;在notebook类中将方法和变量更改为非静态后,在notebookArray类中也进行声明。如果在方法中声明notebook变量a,则它将覆盖该方法范围内的成员。我只是说删除它,因为它现在没有任何用途:有趣的是,它与静态笔记本a一起工作;在notebook类中将方法和变量更改为非静态后,在notebookArray类中也进行声明。如果在方法中声明notebook变量a,则它将覆盖该方法范围内的成员。我只是说移除它,因为它现在没有任何用途:
String colour;
String company;
String model;
static notebook a;
for(int i=0;i<n;i++)
{
a=new notebook();
a.readOne();
arrayOfNotebooks.add(a);
}
for(int i=0;i<n;i++)
{
notebook a=new notebook();
a.readOne();
arrayOfNotebooks.add(a);
}