从Java中的文本文件中读取不同的变量

时间:2015-03-17 03:05:22

标签: java io

所以我有这样的文字:

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?

3 个答案:

答案 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

这只是一个示例代码,它意味着很多实现,但我认为它可以回答你的问题。