如何从文件中获取信息并在程序中使用它 java (ArrayList)
how to get information from a file and using it in a program java (ArrayList)
所以我正在做一个项目,从文本文件中获取数据来计算支付和税收等事情。这是我到目前为止所拥有的,不知道从这里去哪里。我什至无法打开数据的文本文件。如有任何帮助,我们将不胜感激!
newdata.txt
id; name; position; hourly rate; hours worked
这是包含输入数据的文本文件^。
输出应该是这样的:
输出:
员工编号: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();
}
}
首先您需要从文件中读取文本并用真实数据填写 class。在 java 中有多种方法可以做到这一点。 IE。您可以创建一个 BufferedReadStream 并逐行读取文件。
您需要使用“;”将每一行拆分为多个元素。正如你所描述的。
一些元素将表示字符串值,例如名称,其他元素将表示整数和双精度值。您需要使用 Double.parseDouble(string).
之类的方法将字符串转换为这些值
完成后,您可以计算所需的内容并打印结果。
这是一个实现(可能有较小的错误,还没有编译)。将此添加到 Employee class 并将您的 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 对象。
所以我正在做一个项目,从文本文件中获取数据来计算支付和税收等事情。这是我到目前为止所拥有的,不知道从这里去哪里。我什至无法打开数据的文本文件。如有任何帮助,我们将不胜感激!
newdata.txt
id; name; position; hourly rate; hours worked
这是包含输入数据的文本文件^。
输出应该是这样的:
输出:
员工编号: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();
}
}
首先您需要从文件中读取文本并用真实数据填写 class。在 java 中有多种方法可以做到这一点。 IE。您可以创建一个 BufferedReadStream 并逐行读取文件。
您需要使用“;”将每一行拆分为多个元素。正如你所描述的。
一些元素将表示字符串值,例如名称,其他元素将表示整数和双精度值。您需要使用 Double.parseDouble(string).
之类的方法将字符串转换为这些值完成后,您可以计算所需的内容并打印结果。
这是一个实现(可能有较小的错误,还没有编译)。将此添加到 Employee class 并将您的 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 对象。