Я пытаюсь написать класс, который анализирует текстовый файл, хранит информацию в массиве в зависимости от того, в каком году сотрудничал сотрудник, и создать сотрудника, продавца или исполнительного объекта на основе каждой строки. Мой профессор дал нам эту линию, чтобы разобрать годConfused about parsing method
while ((line = br.readLine()) != null)
{
int year = Integer.parseInt(line.substring(0,4));
Employee e = getEmployee(line);
}
И этот метод для разбора остальной части документа
public static Employee getEmployee(String line)
{
Employee e= new Employee()
String[] splitWithComma = line.split(",");
String first = splitWithComma[0];
String[] firstSplit = first.split(" ");
String second = splitWithComma[1];
String[] secondSplit = second.split(" ");
String third = splitWithComma[2];
String[] thirdSplit = third.split(" ");
String fourth = splitWithComma[3];
String[] fourthSplit = fourth.split(" ");
String fifth=splitWithComma[4];
String[] fifthSplit = fifth.split(" ");
}
Я запутался о том, как я должен инициализировать объект Employee в классе getEmployee и если мне нужно, чтобы разобрать любые мои двойники в методе в то время, и как сделать это
Вот мой текстовый файл
2014, Employee, John Baker, 15000
2014, Salesman, Amanda Stein, 30000, 1100000
2014, Executive, Jessica Kettner, 53
2015, Employee,Zach Edwards, 20000
2015, Salesman,Shelby Douglas, 45000, 2345
2015, Executive, Corey Matthews, 67000, 48
Мой класс сотрудник
import java.util.*;
public class Employee
{
private String name;
private double monthlySalary;
public Employee(String name, double monthlySalary)
{
this.name=name;
this.monthlySalary=monthlySalary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMonthlySalary() {
return monthlySalary;
}
public void setMonthlySalary(int MonthlySalary)
{
}
public double annualSalary()
{
return monthlySalary*12;
}
public String toString()
{
String str;
str="Name: "+name;
str+="\nMonthly Salary: "+monthlySalary;
return str;
}
}
И мой водитель
import java.io.*;
import java.util.*;
public class employeeDriver
{
public static void main(String[] args)
{
String line;
String input;
Scanner readInput=null;
Scanner readFile = null;
BufferedReader br=null;
try
{
br = new BufferedReader(new FileReader("tester.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("The file can't be opened");
System.exit(0);
}
try
{
while ((line = br.readLine()) != null)
{
int year = Integer.parseInt(line.substring(0,4));
Employee e = getEmployee(line);
}
}
catch (IOException ioe)
{
System.out.println("Can't read file");
}
finally
{
System.exit(0);
}
}
public static Employee getEmployee(String line)
{
Employee e= new Employee()
String[] splitWithComma = line.split(",");
String first = splitWithComma[0];
String[] firstSplit = first.split(" ");
String second = splitWithComma[1];
String[] secondSplit = second.split(" ");
String third = splitWithComma[2];
String[] thirdSplit = third.split(" ");
String fourth = splitWithComma[3];
String[] fourthSplit = fourth.split(" ");
String fifth=splitWithComma[4];
String[] fifthSplit = fifth.split(" ");
}
}
Прочтите помощь для ['string.split()'] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split (java.lang.String)), это может помочь ... – Lucero
Я понимаю, как работает split, я просто не уверен, как метод getEmployee будет анализировать остальную часть текстового файла и как его сохранить в моем объекте Employee – WILLO567
'getEmployee' только для анализа по одной строке за раз; каждая строка текстового файла считывается, а затем анализируется. Кроме того, мой комментарий относительно справки состоял в том, что записи разделены запятыми, а не разделены пробелами, поэтому, глядя на код, который вы опубликовали, у меня создалось впечатление, что было непонятно, как это работает. – Lucero