所以我有这样的文字:
16783 BOB ARUM 30.5 10.00
很多这些在文本文件中的不同行上作为(long,string,string,double,double) 我想将这些变量存储在一个数组中,到目前为止我有:
public class Main {
public static void main(String[] args){
ArrayList<String> ArrEmployee = new ArrayList<String>(); // create array for employees
try {
Scanner txtIn = new Scanner(new File("payroll.txt"));
}
catch (FileNotFoundException e) {
}
}}
我遇到的问题是我无法找到一种方法来有效地将这些值存储在我的arrEmployee
数组中,以后我可以使用它们。到目前为止,我已经想到用构造函数创建一个不同的类可能有所帮助,但我很难理解如何访问数组中的对象。
例如,如果我只想在行尾添加double,说它现在是存储在数组中的对象,我将如何访问该特定的double?
答案 0 :(得分:1)
创建一个Employee类会有所帮助,所以假设你让一个员工拥有多个实例变量。如果将最后一个double存储为for循环中的一个实例变量,则可以稍后通过从对象中调用该值来检索该值。
如果选择使用这种方式,则必须更改ArrayList以保留Employees,因此必须更改从文件输入的方式。
因此,如果你有一个带有构造函数的Employee类(long,string,string,double,double)和最后一个名为'D3'的double变量,你可以使用它:
public class test {
public static void main(String[] args) {
ArrayList<Employee> ArrEmployee = new ArrayList<Employee>(); // create array for employees
try {
Scanner txtIn = new Scanner(new File("payroll.txt"));
while (txtIn.hasNext()) {
Double D1 = txtIn.nextDouble();
String S1 = txtIn.next();
String S2 = txtIn.next();
Double D2 = txtIn.nextDouble();
Double D3 = txtIn.nextDouble();
ArrEmployee.add(new Employee(D1,S1,S2,D2,D3));
}
} catch (FileNotFoundException e) {
}
System.out.println(ArrEmployee.get(0).getD2());//Note here how you can use method getD2() on the method get(0) of your ArrayList, if the list's type is Employee and you've implemented getD2() to return the last double
}
}
答案 1 :(得分:0)
将输入作为字符串写入arraylist可能看起来很像:
for (line in textFile) {
ArrayList<String> arrList = new ArrayList();
arrList.addAll(Array.toList(line.split(" ")));
}
显然,要使这些字符串有用,您需要将它们转换为实际类型,例如:
double test = Double.parseDouble(arrList[3]);
答案 2 :(得分:0)
这个我如何访问存储在数组中的对象的变量:
arrEmployee[2] = new Employee();//im leaving out the args, since i don't know what they would be
String name = arrEmployee[2].getName();//this is the name of the second employee in the array
这只是一个示例代码,它意味着很多实现,但我认为它可以回答你的问题。