对象数组仅包含最后一个

亚当·克

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

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

以下是代码:

笔记本类

import java.util.Scanner;
public class notebook{
static String colour;
static String company;
static String model;



static void readOne(){
   System.out.println("Company?");
   Scanner in=new Scanner(System.in);
   company=in.next();
   System.out.println("Model?");
   model=in.next();
   System.out.println("Colour?");
   colour=in.next();
}

static void showOne(){
   System.out.println(company);
   System.out.println(model);
   System.out.println(colour);
}

}

notebookArray.class

import java.util.*;
public class notebookArray{

static List<notebook> arrayOfNotebooks=new ArrayList<>();
static int n;
static notebook a;
public static void main(String[] args){
   addMore();
   showMore();
}
static void addMore(){

   System.out.println("How many notebooks would you like to add?");
   Scanner keyboard=new Scanner(System.in);

   n=keyboard.nextInt();

   for(int i=0;i<n;i++)
   {

      a=new notebook();
      a.readOne();
      arrayOfNotebooks.add(a);
   }
}

static void showMore(){
   for(notebook p : arrayOfNotebooks)
   {
      p.showOne();
   }
}
}

感谢您的帮助!

您的问题是您notebook班上的静态成员

static String colour;
static String company;
static String model;

删除static关键字,因为您希望每个notebook实例的成员具有不同的值。

你的方法readOneshowOne不应该是静态两种,因为它们应与非静态成员的工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章