2015-09-18 2 views
0

У меня есть текстовый файл, который я должен использовать в своей программе. Я уже создал файловый читатель, чтобы отобразить содержимое файла. Однако я не хочу отображать весь контент, но показывать количество слов.Поиск общего количества значений в текстовом файле java

Например, мой файл с именем database - это файл, который отображает цену каждого человека и имеет четыре строки, которые отображают имя, возраст, активность и цену. Я хочу создать отчет, который показывает общее количество баскетболистов и общее количество футболистов, а затем отобразит среднюю цену.

Вот мой код до сих пор:

String fileName = "database.txt"; 

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

    } 
    } 

Как я могу рассчитывать и добавить суммарные значения баскетбола, а также футбол для вывода, а также получение каждой платы и расчета общего и среднего?

+1

это домашнее задание? –

+0

Что случилось? Теперь решение стало для вас неуместным? Почему вы удалили принятый ответ? – YoungHobbit

ответ

0

Возможно, вы захотите взглянуть на String#split(). По сути, код будет выглядеть так:

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

Тогда вы можете делать все, что захотите. Официальная документация по методу:

Разделяет эту строку вокруг совпадений данного регулярного выражения. Этот метод работает, как если бы он вызвал метод разделения с двумя аргументами с заданным выражением и предельным аргументом нуля. Завершающие пустые строки поэтому не включены в результирующем массиве

Возвращает: массив строк вычисляется путем разделения этой строки вокруг спичек данного регулярного выражения

1

Вы можете попробовать следующий код. Вы можете разделить строки из файла с помощью пробелов и использовать их. Я использовал условие 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); 
    } 
} 
0

Этот код считывает файл с помощью сканера, а затем находит в среднем плату баскетбола и футбола плату оно само за себя, если есть какие-либо комментарии, пожалуйста,

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); 
    } 

} 
Смежные вопросы