所以我有三个单独的类: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?
答案 0 :(得分:0)
方法run()
似乎无法随处调用。可能是您已经离开了调用此方法的代码片段,但从问题的呈现方式来看,这似乎不太可能。
我建议:
将run()
的名称更改为init()
或initialize()
。这样做的主要原因是run()
通常与Runnable
相关联。
显式调用init()
或initialize()
函数以确保调用它。
调用toLowerCase
上的char
方法,以简化条件逻辑:toLowerCase(char) method?
此外,我强烈建议您将Person
变量的名称更改为person
而不是list
。这可能会在以后造成混淆,因为Person
不是List
。
最后,根据评论,我不太明白你的意思是'它仍然是空白'。这个决定是如何做出的?你能提供一些代码吗?
答案 1 :(得分:-2)
您需要将arrayList
作为公共属性,然后需要创建Directory类的对象。此实例将允许您控制arrayList
的所有属性。
要访问属性,请使用&#34; 。 &#34;在对象名称之后。
将您的属性设为私有,设置返回属性的getArrayList
方法。
然后创建一个新的Directory对象。
使用dirObj.getArrayList