2017-06-18 68 views
1

因此,我正在開發一個項目,以從文本文件中獲取數據來計算付款和稅收等內容。這是我到目前爲止所做的,不知道該從哪裏出發。我甚至無法打開數據的文本文件。任何幫助,將不勝感激!如何從文件中獲取信息並在程序中使用它java(ArrayList)

newdata.txt 
id; name; position; hourly rate; hours worked 

這是包含輸入數據^的文本文件。


輸出應該是這樣的:

輸出:

員工ID:1

員工姓名:AB

位置:C

工資總額:$ 400000.00

聯邦稅:$ 120000.00

淨工資:$ 280000.00


輸出文件:

1; ab c; $ 280000.00

...

package payroll; 
import java.util.ArrayList; 
import java.util.Scanner; 
import java.io.File; 
import java.io.FileReader; 
import java.io.PrintWriter; 

public class Employee { 

    private int id; 
    private String name; 
    private double wage; 
    private double hoursWorked; 


    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public double getWage() { 
     return wage; 
    } 

    public void setWage(double wage) { 
     this.wage = wage; 
    } 

    public double getHoursWorked() { 
     return hoursWorked; 
    } 

    public void setHoursWorked(double hoursWorked) { 
     this.hoursWorked = hoursWorked; 
    } 



    public String toString() { 
     return null; 

    } 




    public static void main(String[] args) { 
     File myFile = new File("newdata.txt"); 

     System.out.println(myFile); 

     Employee employee1 = new Employee(); 
     employee1.getId(); 
     employee1.getName(); 
     employee1.getWage(); 
     employee1.getHoursWorked(); 


    } 



} 
+0

'java.util.List lines = java.nio.file.Files.readAllLines(Paths.get(「newdata.txt」),StandardCharsets.UTF_8);' – matoni

+0

這裏的問題究竟是什麼?你問如何從文件中讀取文本?這裏已經有很多類似的問題了。你讀過一些像[閱讀Java中的純文本文件](https://stackoverflow.com/questions/4716503/reading-a-plain-text-file-in-java?)?無論如何,你的文本文件看起來像CSV文件的變化。搜索該格式的解析器並將其設置爲使用';作爲分隔符,並讓它完成它的工作。 – Pshemo

+0

@Pshemo這裏的問題是,我想將文件中的輸入數據轉換爲輸出格式和文件,並且我被卡住 – spider249

回答

1

這是一個實現(可能有較小的錯誤,沒有編譯它)。此加入Employee類和替換下一個你的main()函數:

public String position; 


public String getPosition(){ 
    return position; 
} 

public void setPosition(String position){ 
    this.position = position; 
} 

public String toString() { 
    return getID() + "; " + getName() + "; " + getPosition() + "; " + getWage() + "; " + getHoursWorked(); 
} 




public static void main(String[] args) { 
    Employee employee1 = new Employee(); 

    java.util.List<String> lines = java.nio.file.Files.readAllLines(Paths.get("newdata.txt"), StandardCharsets.UTF_8); 
    for(int i=2; i < lines.size(); i++){ 
     String[] splittedData = lines.get(i).split("; "); 
     employee1.setId(splittedData[0]); 
     employee1.setName(splittedData[1]); 
     employee1.setPosition(splittedData[2]); 
     employee1.setWage(Double.parseDouble(splittedData[3])); 
     employee1.setHoursWorked(Double.parseDouble(splittedData[4])); 
    } 
} 

注:我不會做這一個,因爲我不知道你是否需要它,但這個如果newdata.txt中有多行,則實施將覆蓋employee1的詳細信息。您可以在for循環之前添加List<Employee>對象,並在每次迭代中添加新的Employee對象。

+0

即時在'lines.length'和'lines [i] .split(「; 「)' – spider249

+0

我已經編輯了答案。我沒有我的電腦,所以我不能檢查它,如果它不工作再評論,我會在家裏看看它。 – detus

0

首先你需要從文件中讀取文本,並填寫你的類與真實的數據。在java中有多種方式。即你可以創建一個BufferedReadStream並逐行讀取文件。

比你需要將每行分割成元素,使用';'。如你所述。

一些元素將表示字符串值,如名稱,其他整數和雙精度值。你需要使用類似Double.parseDouble(string)的方式將字符串轉換爲這些值。

完成後,您可以計算出您需要的值並打印結果。

相關問題