私は、テキストファイルを解析し、従業員が参加した年に基づいて配列に情報を格納し、各行に基づいてemployee、salesman、またはexecutiveオブジェクトを作成するクラスを作成しようとしています。私の教授は今年構文解析について混乱しています
while ((line = br.readLine()) != null)
{
int year = Integer.parseInt(line.substring(0,4));
Employee e = getEmployee(line);
}
解析するために私たちは、この行を与え、この方法は、私がGETEMPLOYEEクラスでEmployeeオブジェクトを初期化する方法について困惑している
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(" ");
}
文書の残りの部分を解析します、私はしばらくの方法で任意の私のダブルスを解析する必要がある場合、および実行する方法と
はここに私のテキストファイルだと
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
私は分割の仕組みを理解しています、私はちょうどgetEmployeeメソッドがテキストファイルの残りの部分を解析する方法と私の従業員オブジェクトにそれを格納する方法を確信しています – WILLO567
'getEmployee'は、一度に1行。テキストファイルの各行が読み込まれ、次に解析されます。また、私のコメントは、レコードがスペース区切りではなくカンマで区切られているため、投稿したコードを見ると、その仕組みがはっきりしていないという印象を受けました。 – Lucero