【发布时间】:2018-06-27 09:01:09
【问题描述】:
我有一个格式如下的文本文件:
[Employee ID], [Full Name], [Rate of Pay]
一对示例行如下所示:
32483, William Ellis, 25.50
58411, Jonathan Ian Morris, 15.00
我正在尝试读取文本文件中的所有员工,并为每个员工创建对象,将姓名、ID 和工资存储在哈希图中。我将 EmpID 作为字符串,员工姓名作为字符串,工资作为双倍。我的问题是它将 EmpID 读取为包含“,”的字符串,然后它将名字作为名称变量读取,然后尝试将中间名或姓氏作为双精度名称,并附加“,”。因此,例如它会如下所示:
empID: "32483,"
全名:“威廉”
工资:Ellis(产生错误)
while(inputFile.hasNext()) {
empID = inputFile.next();
fullName = inputFile.next();
wage = inputFile.nextDouble();
empmap.put(empID, new Employee(empID, fullName, wage));
}
我想我可以试试名字和姓氏,但有些人有中间名,或者只是一个名字。我还考虑了将每个字符逐个字符并将它们连接起来的可能性,同时使用“,”作为一种空字符,让程序知道它之前的所有内容都是一个字符串并且新字符串即将开始但在我尝试这样的事情之前,我认为必须有一个更简单的解决方案。
【问题讨论】:
-
Scanner.next() 默认使用空格作为分隔符。所以,改变分隔符。或者阅读下一行,并使用 String.split() 拆分逗号字符。或者使用 CSV 解析器。