2017-06-18 72 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)的方式将字符串转换为这些值。

完成后,您可以计算出您需要的值并打印结果。

相关问题