【问题标题】:Finding the total number of values in a text file java查找文本文件java中的值的总数
【发布时间】:2015-09-18 03:28:24
【问题描述】:

我有一个必须在程序中使用的文本文件。我已经创建了 用于显示文件内容的文件阅读器。但是,我不想显示所有内容,而是显示字数。

例如,我的名为数据库的文件是一个显示每个人价格的文件,它有四行显示姓名、年龄、活动和价格。我想创建一个报告,显示篮球运动员总数和足球运动员总数,然后显示平均价格。

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

String fileName = "database.txt";

try {
  FileReader fileReader = new FileReader(fileName);
  BufferedReader bufferReader = new BufferedReader(fileReader);
  while ((line = bufferReader.readLine()) != null) {

   }
  }

我如何计算和添加篮球和足球的总价值作为输出以及获得每项费用并计算总和平均值?

【问题讨论】:

  • 发生了什么?现在解决方案对您来说变得无关紧要了吗?为什么要删除已接受的答案?

标签: java filereader readline


【解决方案1】:

你可以试试下面的代码。您可以使用空格从文件中拆分行并使用它们。我在 else 部分使用了 if 条件,因为如果文件中有任何其他类型的运动。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Player {
  public static void main(String[] args) throws IOException {
    int basketballCount = 0;
    int soccerCount = 0;
    double basketballFee = 0.0;
    double soccerFee = 0.0;

    BufferedReader read  = new BufferedReader(new FileReader("database.txt"));
    String line;
    while ((line = read.readLine()) != null) {
      String parts[] = line.split(" ");
      if (parts[3].equals("basketball")) {
        basketballCount++;
        basketballFee = basketballFee + Double.parseDouble(parts[4]);
      } else if (parts[3].equals("soccer")) {
        soccerCount++;
        soccerFee = soccerFee + Double.parseDouble(parts[4]);
      }
    }
    System.out.println("Total Player: "+basketballCount + "\tTotal Fee: " + basketballFee + "\tAvg Fee:" + basketballFee/basketballCount);
    System.out.println("Total Player: "+soccerCount + "\tTotal Fee: " + soccerFee + "\tAvg Fee:" + soccerFee/soccerCount);
  }
}

【讨论】:

    【解决方案2】:

    您可能想看看String#split()。本质上,代码将如下所示:

    String[] tokens = line.split(" ");
    double value = Double.valueOf(tokens[4]);
    String sport = tokens[3];
    

    然后你可以对这些值做任何你想做的事情。该方法的官方文档:

    围绕给定正则表达式的匹配拆分此字符串。 此方法的工作方式就像通过使用给定表达式和零限制参数调用双参数拆分方法一样。因此,尾随的空字符串不包含在结果数组中

    返回: 通过围绕给定正则表达式的匹配拆分此字符串计算的字符串数组

    【讨论】:

      【解决方案3】:

      此代码使用扫描仪读取文件,然后找到篮球费用和足球费用的平均值,如果有任何说明,请发表评论

      import java.io.File;
      import java.io.FileNotFoundException;
      import java.util.Scanner;
      public class StackOverflow 
      {
          public static void main(String[] args) throws FileNotFoundException 
          {
              Scanner sc = new Scanner(new File("database.txt"));
              int basketball = 0;
              int soccer = 0;
              double basketfee = 0.0, soccerfee = 0.0;
              while (sc.hasNextLine()) 
             {
                 String line = sc.nextLine();
                 if (line.contains("basketball")) 
                 {
                      basketball++;
                      String fee = line.substring(line.lastIndexOf(' '));
                      fee = fee.trim();                                
                      basketfee = basketfee + Double.parseDouble(fee);
                 }
                 else if (line.contains("soccer")) 
                 {
                     soccer++;
                     String fee = line.substring(line.lastIndexOf(' '));
                     fee = fee.trim();
                     soccerfee = soccerfee + Double.parseDouble(fee);
                 }
             }
             System.out.println("Average fee for basketball is " + basketfee / basketball);
             System.out.println("Average fee for soccer is " + soccerfee / soccer);
         }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 2016-01-07
        相关资源
        最近更新 更多