【问题标题】:How to access an arraylist from another class如何从另一个类访问数组列表
【发布时间】:2018-09-15 23:57:38
【问题描述】:

所以我有三个独立的类,分别命名为: 1. 用户界面;这是用户可以通过第二类的方法输入数据的地方 2. 目录;这是我将文本文件加载到数组列表中的地方,并且这个类中有很多方法。 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?

【问题讨论】:

    标签: java object arraylist text-files


    【解决方案1】:

    run() 方法似乎没有在任何地方被调用。可能是您遗漏了调用此方法的一段代码,但从问题出现的方式来看,这似乎不太可能。

    我推荐:

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

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

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

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

    最后,从 cmets 来看,我不太明白你所说的“它仍然是空白的”是什么意思。这个决定是如何做出的?能否提供一下代码?

    【讨论】:

      【解决方案2】:

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

      要访问属性,请在对象名称后使用“.”。

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

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

      使用dirObj.getArrayList调用你的方法

      【讨论】:

      • 你能告诉我吗,我有点明白你在说什么,但不知道怎么写出来
      • 在您的 Directory 类中更改此 ArrayList people = new ArrayList ();使用公共 ArrayList 人员 = new ArrayList ();然后,转到您的 UserInterface 类并创建您的目录类的对象 Directory dirObj = new Directory();这将允许您访问这样的属性(dirObj.persons)将为您提供 arrayList 的值
      • 为什么推荐使用公共字段?您知道您正在以这种方式打破封装并传播不良习惯。
      • 还有@DeemAh,请不要让别人为你写代码。接受这个想法,首先尝试自己编写,如果卡住了,请展示你尝试过的内容。
      • 他好像是个初学者,我给了他最简单的方法
      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多