如何从另一个类访问arraylist

时间:2018-04-06 02:59:48

标签: java object arraylist text-files

所以我有三个单独的类:1。用户界面;这是用户可以通过第二类2.目录中的方法输入数据的地方。这是我将文本文件加载到arraylist的地方,这个类中有很多方法。 3.人员班;这是构造函数名/姓,姓名缩写和电话号码的对象。我完成了对Directory和Person类的编码,现在我需要对User Interface类进行编码,如何从Directory类访问arraylist以便我可以使用我的方法?到目前为止,我的用户界面类是这样的:

public class UserInterface
{

    public static void main(String[] args)
    {

        Scanner kbd = new Scanner (System.in);
        Directory directory = new Directory();

        showMenu();
        char userInput = kbd.next().charAt(0);

        directory.getArrayList();

        if (userInput == 'p' || userInput == 'P'){
            directory.optionP();
        }
        else if (userInput == 'l' || userInput == 'L'){
            directory.optionL();
        }
        else if (userInput == 'r' || userInput == 'R'){
            directory.optionR();
        }
        else if (userInput == 'c' || userInput == 'C'){
            directory.optionC();
        }
        else if (userInput == 'a' || userInput == 'A'){
            directory.optionA();
        }
        else if (userInput == 'd' || userInput == 'D'){
            directory.optionD();
        }
        else {
            directory.optionE();
        }


        System.out.println ("Thank you for using the Directory System");
    }
}

我的目录类:

public class Directory{

    Scanner kbd = new Scanner (System.in);
    ArrayList <Person> persons = new ArrayList <Person>();

    public void run() throws FileNotFoundException{
        String firstName;
        String lastName;
        String initial;
        String department;
        int telNum;

        File inFile = new File ("phone.txt");
        Scanner in = new Scanner (inFile);

        while (in.hasNext()){
            Person list;
            lastName = in.next();
            firstName = in.next();
            initial = in.next();
            department = in.next();
            telNum = in.nextInt();
            list = new Person(lastName, firstName, initial, department, telNum);
            persons.add(list);
        }
        in.close();


        System.out.println(persons);
    }
}

获取ArrayList方法:public void getArrayList(){ System.out.println(persons); }

当我运行我的用户界面类并选择一个选项时,arraylist是空白的,那么我应该在这个类中做什么才能从Directory类访问arraylist?

2 个答案:

答案 0 :(得分:0)

方法run()似乎无法随处调用。可能是您已经离开了调用此方法的代码片段,但从问题的呈现方式来看,这似乎不太可能。

我建议:

  1. run()的名称更改为init()initialize()。这样做的主要原因是run()通常与Runnable相关联。

  2. 显式调用init()initialize()函数以确保调用它。

  3. 调用toLowerCase上的char方法,以简化条件逻辑:toLowerCase(char) method?

  4. 此外,我强烈建议您将Person变量的名称更改为person而不是list。这可能会在以后造成混淆,因为Person不是List

  5. 最后,根据评论,我不太明白你的意思是'它仍然是空白'。这个决定是如何做出的?你能提供一些代码吗?

答案 1 :(得分:-2)

您需要将arrayList作为公共属性,然后需要创建Directory类的对象。此实例将允许您控制arrayList的所有属性。

要访问属性,请使用&#34; 。 &#34;在对象名称之后。

将您的属性设为私有,设置返回属性的getArrayList方法。

然后创建一个新的Directory对象。

使用dirObj.getArrayList

调用您的方法