java - 如何使用取自外部文件输入的对象名称在 Java 中创建对象
问题描述
我有一个class Customer
带有构造函数的 javaCustomer(string firstName, string lastName)
和一个getName()
允许我从每个Customer
对象中获取客户名称的方法
然后我有一个input.txt
包含名字和姓氏的文件,如下例所示:
Alan, Walker
Tom, Hanks
如何从上面的每一行中自动读取名字和姓氏,并相应Customer
地为该人名创建一个对象?
示例:我想让程序自动读取第一行“Alan,Walker”并创建对象AlanWalker = new Customer("Alan", "Walker")
,然后对第二行执行相同操作
其次,我的第二个任务是为用户提供从键盘发出命令以获取创建的客户名称的能力。例如:用户可以键入“Alan Walker,打印姓名”,程序将运行AlanWalker.getName()
以提供所需的输出为“Alan Walker”。我该如何实施?
解决方案
我在下面写了我对这个问题的解决方案,其中包括使用 HashMap 通过值访问特定对象。( HashMap ) 下面的代码将根据名称创建 Person 对象的 HashMap。
public static final HashMap<String, Person> people = new HashMap<>();
对于这些示例,将使用以下 Person 类:
public class Person {
private String firstName, lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getName() {
return firstName + " " + lastName;
}
}
您可以首先使用 BufferedReader 读取所有文件并为每一行创建一个对象,如下所示:
File txtFile = new File("names.txt");
BufferedReader txtFileReader = new BufferedReader(new FileReader(txtFile));
String line = null;
line = txtFileReader.readLine();
while (line != null) {
String firstName = line.split(", ")[0];
String lastName = line.split(", ")[1];
Person person = new Person(firstName, lastName);
people.put(person.getName(), person);
line = txtFileReader.readLine();
}
txtFileReader.close();
此代码将为文件中格式的每一行有效输入创建一个新的 Person 实例<first_name>, <last_name>
。
我们现在将有一个 HashMap,如下所示:
"Alan Walker", PERSON OBJECT
"Tom Hanks", PERSON OBJECT
然后根据用户输入与每个对象进行交互,我们可以使用用户输入从 people HashMap 中检索对象,Alan Walker, print name
代码如下:
BufferedReader consoleInput = new BufferedReader(new InputStreamReader(System.in));
String input = consoleInput.readLine();
String name = input.split(", ")[0];
Person chosenPerson = people.get(name);
从这里您可以对对象执行操作,例如,如果您想获取对象的名称,您将执行以下操作:
chosenPerson.getName()
希望这可以帮助。
推荐阅读
- yocto - 在 yocto 项目中包含预编译的 zImage
- arrays - 为什么 res.json 返回空?
- php - Laravel,如果用户未通过身份验证,则重定向到特定的登录页面
- laravel-passport - Passport 和 Auth::logout() 产生意外错误
- node.js - How to perform deep populate mongoose?
- nginx - 从 nginx error_log 中删除一个条目
- wordpress - 获取 WordPress 类别中的产品
- java - 不同语言的模运算符差异
- python - 列表上的`in`运算符与具有多个条件的`or`运算符-python
- excel - 为什么这个Excel VBA“如果等于空值”总是报错?