首页 > 解决方案 > 如何通过拆分字符串来创建 Person 对象

问题描述

我必须使用splitmethod(" "); 我想我应该使用for循环来获取与类的字段对应的值Person,但是我该怎么做以及如何创建一个Person对象并将其添加到对象列表中?我已经这样做了:

    String[] peopleArray = warehouse.split(" ");
    String[][] personArray = new String[peopleArray.length][4];
    for (int i = 0; i < peopleArray.length; i++) {
        personArray[i] = peopleArray[i].split("/|\\.");
        
        for (String field : personArray[i]) {
            
            System.out.print(field + " ");
        }
        System.out.println(" ");

我无法使用此方法获取字段

Person 类是使用姓名、姓氏、出生日期和出生地点等字段创建的。

这是我的人员类

package warehouse;

导入 java.time.LocalDate;导入 java.time.format.DateTimeFormatter;

公共类人{

public String name;

public String lastname;

public LocalDate dateOfBirth;

public String placeOfBirth;

DateTimeFormatter FORM = DateTimeFormatter.ofPattern("dd.MMM yyyy.");


public Person(String name, String lastname, LocalDate dateOfBirth, String placeOfBirth) {

    this.name = name;

    this.lastname = lastname;

    this.placeOfBirth = placeOfBirth;

    this.dateOfBirth = dateOfBirth;

}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public String getPlaceOfBirth() {
    return placeOfBirth;
}

public void setPlaceOfBirth(String placeOfBirth) {
    this.placeOfBirth = placeOfBirth;
}

public String getLocation() {
    return dateOfBirth.format(FORM);
}

public void setDateOfBirth(LocalDate dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
}
@Override

public String toString() {

    return ("Name: " + name + " ; " + "Lastname: " + lastname + " ; " + "Date of birth: " + dateOfBirth.format(FORM) + " ; "
            + "Place of birth: " + placeOfBirth);

}

}

标签: java

解决方案


public static void main(String[] args) throws IOException, NoSuchFieldException, IllegalAccessException, ParseException {
    String warehouse = "John.Davidson/05082004/Belgrade Michael.Barton/01011998/Krakov Ivan.Perkinson/23051986/Moscow";
    String[] peopleArray = warehouse.split(" ");
    List<Person> persons = new ArrayList<>();
    for (int i = 0; i < peopleArray.length; i++) {
        String[] person = peopleArray[i].split("/|\\.");
        SimpleDateFormat format1 = new SimpleDateFormat("ddMMyyyy"); // first example
        Date d1 = format1.parse(person[2]);
        persons.add(new Person(person[0], person[1], d1, person[3]));
    }
}

这可能适用于以下人员类别:

static class Person {
    String name;
    String lastName;
    Date date;
    String place;

    public Person(String name, String lastName, Date date, String place) {
        this.name = name;
        this.lastName = lastName;
        this.date = date;
        this.place = place;
    }
}

推荐阅读