java - 从文本文件实例化一个类
问题描述
我有一个包含姓名、电话号码和员工 ID 的文本文件。
例子:
Chris Cotton
5555555555
CCOTTON
Joshua Trammell
5555555555
JTRAMMELL
我有一个名为 Employee 的类,其构造函数采用姓名、电话号码和 ID。
如何使用该文本文件为我的文本文件中的每条记录实例化员工类,使用员工 ID 作为对象名称?
package com.evolution.model;
public class Employee {
private String name;
private int phoneNumber;
private String employeeId;
public Employee(String name, int phoneNumber, String employeeId) {
this.name = name;
this.phoneNumber = phoneNumber;
this.employeeId = employeeId;
}
解决方案
您可以逐行读取文件,并且可以在一个数组中保持三个连续的行,当您捕获三行时,您可以使用它的构造函数来构造员工对象,就像我在我的 main 方法中展示的那样。
这是您可以使用的示例代码。为了安全起见,我已将 phoneNumber 的数据类型从 更改为int
,String
因为电话号码可能只包含数字,也可能不包含数字。但是,如果您确定您的电话号码将仅包含不以零开头的数字,您可以编写Integer.parseInt(fileLines.get(i + 1))
而不是仅fileLines.get(i + 1)
在 for 循环中的构造函数创建调用中编写。
这是相同的示例代码,
public class Employee {
private String name;
private String phoneNumber;
private String employeeId;
public Employee(String name, String phoneNumber, String employeeId) {
this.name = name;
this.phoneNumber = phoneNumber;
this.employeeId = employeeId;
}
public String toString() {
return String.format("name: %s, phoneNumber: %s, employeeId: %s",
new Object[] { name, phoneNumber, employeeId });
}
public static void main(String args[]) throws Exception {
try (BufferedReader reader = new BufferedReader(new FileReader("emp.txt"));) {
String line = null;
int counter = 0;
String[] lineObject = new String[3];
while ((line = reader.readLine()) != null) {
line = line.trim();
if (line.length() == 0) {
continue;
}
lineObject[counter++] = line;
if (counter == 3) {
counter = 0;
Employee employee = new Employee(lineObject[0], lineObject[1], lineObject[2]);
System.out.println(employee);
// employee.dowhatever();
}
}
}
}
}
执行时,该程序打印以下输出,
name: Chris Cotton, phoneNumber: 5555555555, employeeId: CCOTTON
name: Joshua Trammell, phoneNumber: 5555555555, employeeId: JTRAMMELL
推荐阅读
- ios - 图像资产如何为纵向和横向指定不同的图像
- python - 长度不同时的最长子序列问题
- node.js - 无法使用 res.writeHead() 和 .end() 从节点服务器获取重定向响应
- python - Random.shuffle 出人意料地在循环内不起作用
- artifactory - 远程转到注册表到自托管的 Git 存储库(不是 Github/Gitlab/bitbucket)
- c# - Physics.OverlapSphere 未正确检测对撞机
- jquery - 如何使用 jQuery 选择第 m 个元素的第 n 个子元素
- typescript - 如何可靠地检测 TSLint 中的 TypeScript SyntaxKind?
- jquery - vue项目中如何安装jquery
- graph - Gremlin 获取存在连接它们的双向边的顶点