Итак, я получаю неправильное значение всякий раз, когда br.readLine()
достигает переменной annualSalary
- которая является двойной.Я считаю, что проблема может быть связана с тем, как я настроил String[] EmployeeInfo
с разделителем токенов и тому подобным.
filename.txt
FT May Green 7777777 Acct 50000.00 10 true
MGR Eren Blate 9999999 HR 75000.00 20 true 15
PT Hans Choi 2222222 IT 250 45
PT Linda White 8888888 Acct 50.00 160
FT Michael DeFretas 4444444 Mkg 108000.00 15 false
Payroll.java
import java.io.*;
import java.util.ArrayList;
public class Payroll {
private static final String FILENAME = "filename.txt";
public static void main(String[] args) {
BufferedReader br = null;
FileReader fr = null;
try {
fr = new FileReader(FILENAME);
br = new BufferedReader(fr);
ArrayList<Employee> employeeList = new ArrayList<Employee>();
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
//System.out.println(sCurrentLine);
if (sCurrentLine.startsWith("FT")) {
String[] employeeInfo = sCurrentLine.split("\\s+");
String firstName = employeeInfo[1];
String secondName = employeeInfo[2];
String fullName = firstName + " " + secondName;
String SSN = employeeInfo[3];
String department = employeeInfo[4];
double annualSalary = Double.parseDouble(employeeInfo[5]);
int vacayLength = Integer.parseInt(employeeInfo[6]);
boolean isContracted = Boolean.parseBoolean(employeeInfo[7]);
employeeList.add(new FullTime(fullName, SSN, department, annualSalary, vacayLength, isContracted));
Employee fullTime = new FullTime(fullName, SSN, department, annualSalary, vacayLength, isContracted);
System.out.println(fullTime.toString());
//for (Employee p : employeeList) {
//System.out.println(p);
//}
}
else if (sCurrentLine.startsWith("PT")) {
}
else {
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException ex) {
System.out.println("file not founf");
ex.printStackTrace();
}
}
}
}
Текущий вывод:
May Green 7777777 Acct 0.0 0 false
Michael DeFretas 4444444 Mkg 0.0 0 false
Как вы, вероятно, видите, однаждыдостигает двойного, все это сбивается.Может быть, изменение разделителя на что-то еще может решить проблему?Я попытался изменить его на пробел или табуляцию без особого успеха.