java - 如何通过拆分字符串来创建 Person 对象
问题描述
我必须使用split
method(" "); 我想我应该使用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);
}
}
解决方案
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;
}
}
推荐阅读
- swift - 如何在字典中上传多部分表单数据?
- javascript - 将整个模块导出为默认导出
- mysql - 当两行的值相同并且一行匹配到两个不同的行时,SQL JOIN with WHERE 条件
- python - 如何预测经过训练的 SVR 模型并解决错误 Value Error: X.shape[1] = 1 should be equal to 22
- django - 我正在学习一门使用 Django 开设电子商务商店的课程。问题:异常值:__str__ 返回非字符串(NoneType 类型)
- php - PHP 7 的 Laravel TCPDF 替代品
- ios - 在 xcode 10.1 上制作的 iOS 应用程序会在 iOS 13 或更高版本上运行吗?
- node.js - 为什么机器人只能减去硬币?
- javascript - Java Script getSelection() 忽略内部 HTML
- node.js - 打字稿错误:此表达式不可调用。类型 'typeof import("koa-session")' 没有调用签名