Java 对象数组只包含最后一个对象

Java 对象数组只包含最后一个对象,java,arrays,object,Java,Arrays,Object,我用Java编写了一个notebook类,其中包含notebook 3的属性,要求用户输入它们,然后它包含一个函数来显示它们 第二个类notebookArray声明了上面声明的notebook类型的数组。问题是,在我读取了许多元素并希望显示它们之后,数组的每个元素都包含上次读取的属性 代码如下: 笔记本类 notebookArray.class 谢谢你的帮助 您的问题是笔记本类中的静态成员: 删除static关键字,因为您希望每个笔记本实例对这些成员具有不同的值 您的readOne和showOn

我用Java编写了一个notebook类,其中包含notebook 3的属性,要求用户输入它们,然后它包含一个函数来显示它们

第二个类notebookArray声明了上面声明的notebook类型的数组。问题是,在我读取了许多元素并希望显示它们之后,数组的每个元素都包含上次读取的属性

代码如下:

笔记本类

notebookArray.class


谢谢你的帮助

您的问题是笔记本类中的静态成员:

删除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);
}