我有这个类ENTRY有PERSON和PHONE类型(两个分开的类。在我的主类中,我使用Scanner从txt文件中获取数据并将其插入ENTRY创建者方法。问题是我只能获得PHONE变量权限,而PERSON变得“无效”。单独地,当我通过相同的Scanner和txt文件创建PERSON时,我会为PERSON类型获得良好的结果。
以下是代码的一部分:
在课堂上:
public static PERSON loadPerson(Scanner sc)
{
return new PERSON(sc.next(), sc.next());
}
在课堂上电话:
public static PHONE loadPhone(Scanner sc){
return new PHONE(sc.next(), sc.next());
}
在课堂入学:
public static ENTRY loadEntry(Scanner sc)
{
return new ENTRY(PERSON.loadPerson(sc), PHONE.loadPhone(sc));
}
在主测试课中我写道:
E = ENTRY.loadEntry(sc);
txt文件第1行看起来像这样:“Gavrilo Aleksic 012 221788”(不含引号)。他应该将名字和名字输入PERSON constuctor,将两个数字输入PHONE const。他们看起来像:
PERSON:
private String name;
private String surname;
public PERSON(String name, String surname)
{
this.name = name;
this.surname = surname;
}
PHONE:
private String local, area;
public PHONE(String area, String local)
{
this.area = area;
this.local = local;
}
ENTRY:
public static ENTRY loadEntry(Scanner sc)
{
return new ENRTY(PERSON.loadPerson(sc), PHONE.loadPhone(sc));
}
答案 0 :(得分:0)
Objects
中的{p> Java
为passed by reference。
正如我从您的问题中所理解的那样,您希望在执行时初始化Person
和Phone
的实例 -
new Entry()
而且,Entry
类结构类似于
class Entry {
Person p;
Phone ph;
}
在Entry
类
Entry (Person p, Phone ph) {
this.p = p;
this.ph = ph;
}
现在,在你的主要方法 -
Scanner s = new Scanner("File path to read from");
Entry e = Entry.loadEntry(sc);
s.close();
内部,loadEntry
方法
public static Entry loadEntry (Scanner sc) {
if (s.hasNextLine()) {
String[] temp = s.nextLine().split("\\s");
//assuming file contains 'Gavrilo Aleksic 012 221788'
Person p = new Person(temp[0], temp[1]);
Phone ph = new Phone(temp[2], temp[3]);
return new ENRTY(p, ph);
}
return null;
}