从文本文件中的一行读取特定数据类型

时间:2017-08-04 15:57:36

标签: java

我试图计算保险单列表中的平均项目数,如何从文本文件中获取项目(int)的值?

以下是文本文件中的数据示例:

20-Jul-2017   EQ123B   3   40000   30   A   5389   l a   
20-Jul-2017   ED423A   2   40000   30   A   5389   k d   
31-Jul-2017   ZD123V   4   40000   30   A   5389   s c   

每一行代表不同保险单的数据,第三列是要保险的项目数量。我曾计划通过获取文件中的项目总数并将其除以策略数来获得每个策略的平均项目数。

到目前为止,这是我的代码:

    try{
        int numOfPolicies = 0;
        try (Scanner file = new Scanner(new FileReader("policy.txt"))) {

            //loop through the file counting each line. Each line represents a policy
            while(file.hasNextLine()){

                numOfPolicies++;
                file.nextLine(); 
            }
        }
        System.out.println("Total Number of Policies: " + numOfPolicies);

    }
    catch(FileNotFoundException e){

        System.out.println("File not found");
    }

正如您所看到的,我已经获得了文件中的策略数量。如何只读取每行中的项目数,并将其存储在变量中?

1 个答案:

答案 0 :(得分:3)

如果您的行符合此格式(空格仅用作分隔符):

20-Jul-2017 EQ123B 3 40000 30 A 5389 l a

要检索3,您可以捕获第二个和第三个空格之间的数字 您可以将String.split()方法与\\s正则表达式一起使用,并将限制设置为4,因为您在策略数量之后不关心令牌:

String[] split = file.nextLine().split("\\s+", 4);

您将获得以下令牌:

  

20-JUL-2017

     

EQ123B

     

3

     

40000 30 A 5389 l a

你可以得到第三个标记:

String number = split[2];