从同一个包中的另一个类填充ArrayList

时间:2017-11-02 08:54:24

标签: java class arraylist netbeans

我正在学习java,我花了一个星期的时间试着去做我要解释的事情..

我有一个带有开关/案例的主类,它将调用其他类。 另外,让Car.java包含以下代码:

public class Car {
    private int id;
    private String name;
    private int serie;
    private double price;

    Car() {  
    }

    public Car(int id, String name, int serie, double price) {
        this.id = id;
        this.name = name;
        this.serie = serie;
        this.price= price;
    }
}

有些类如“setName.java”和“setSerieAndPrice”:

public class setIdAndName {

    public static void sName(){
        //Car c = new Car();??

        System.out.println("Insert an ID: ");
        Scanner read = new Scanner(System.in);
        int readId=read.nextInt();
        int idOk=readId;


        System.out.println("Write a name: ");
        Scanner read2 = new Scanner(System.in);
        String readName=read2.next();
        String nameOk=readName;

        //HERE IF WHERE I HAVE THE PROBLEM - HOW CAN I SET THE ID AND THE NAME TO THE ARRAYLIST CAR
        c.setId(idOk);
        c.setName(nameOk);
        System.out.println("ID set: ");
        System.out.println(c.getId());
    }
}

所以..我的问题是: - 我应该在哪里声明我的ArrayListt = new ArrayList<>(); ?在主要或在Car.java? - 声明ArrayList后,如何从setIdAndName.java类访问它?

我希望你能帮帮我.. 非常感谢,非常感谢!

2 个答案:

答案 0 :(得分:0)

你如何做到这一点。

1)您可以在主类中定义静态并直接调用

Main.arraylist.add(obj)

2)对象通过引用传递,因此您可以在每个接受ArrayList作为参数的类中定义一个方法,并且可以从该方法中添加项目。

因为它通过引用传递,它将在同一个对象中进行更改。

答案 1 :(得分:0)

问题1:您可以在任何地方声明您的列表:)这取决于您如何使用它。您将从您的经验中学习。

问题2:有很多方法可以访问它。此外,它取决于您以后使用该列表。一些简单的用法:

  1. 将列表传递给方法以扫描汽车信息。像这样:

    public static void sName(ArrayList <Car> theList){
        // input car info to Car c;
        theList.add(c);
    }
    
  2. 您可以直接访问列表。像这样:Main.theList.add(...);必须在Main类(Main.java文件)中声明theList。

    public static void sName(){
        // input car info to Car c;
        Main.theList.add(c); // this list should be declared: static public ArrayList <Car> theList=new ArrayList<>();
    }
    
  3. 我想告诉你另一个解决你的“任务”的方法:)

    像这样更改你的setIdAndName类:

        public class setIdAndName {
            public static Car sName(){
                Car c = new Car();
    
                ...
    
                c.setId(idOk);
                c.setName(nameOk);
                return c;
            }
        }
    

    将主要功能更改为:

        public static void main(String[] args) {
            ArrayList <Car> theList = new ArrayList <> ();
            theList.add(setIdAndName.sName ()); // 1st car
            theList.add(setIdAndName.sName ()); // 2nd car
            // ...
        }
    

    我希望它会对你有所帮助。好学习:))