Parameter passing 当我将扫描器作为参数传递到类中时,扫描器的行为如何?

Parameter passing 当我将扫描器作为参数传递到类中时,扫描器的行为如何?,parameter-passing,java.util.scanner,static-methods,Parameter Passing,Java.util.scanner,Static Methods,我有一个类条目,它包含PERSON和PHONE类型(两个独立的类)。在我的主类中,我使用Scanner从txt文件中获取数据并将其插入条目创建者方法。问题是我只正确获取PHONE变量,而PERSON得到“null”.个人而言,当我通过相同的扫描仪和txt文件创建PERSON时,我在输入PERSON时得到了很好的结果 以下是部分代码: 课堂人员: public static PERSON loadPerson(Scanner sc) { return new PERSON(

我有一个类条目,它包含PERSON和PHONE类型(两个独立的类)。在我的主类中,我使用Scanner从txt文件中获取数据并将其插入条目创建者方法。问题是我只正确获取PHONE变量,而PERSON得到“null”.个人而言,当我通过相同的扫描仪和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 Constructor中输入名字和姓氏,在PHONE const中输入两个数字。它们看起来像:

人:

private String name;
private String surname;

public PERSON(String name, String surname)
    {
        this.name = name;
        this.surname = surname;
    } 
电话:

private String local, area;
public PHONE(String area, String local)
    {
        this.area = area;
        this.local = local;
    }
条目:

public static ENTRY loadEntry(Scanner sc)
    {
        return new ENRTY(PERSON.loadPerson(sc), PHONE.loadPhone(sc));
    }

Java
中的
对象是

我从您的问题中了解到,您希望在执行以下操作时初始化
Person
Phone
的实例-

     new Entry()
而且,
条目
类结构类似于

    class Entry {
       Person p;
       Phone ph;
    }
将构造函数添加到
条目

    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;
    }

请显示所有三个类的构造函数。同时显示输入行pleaseok,在这里。您的意思是有必要为没有扫描仪的条目创建构造函数吗?