我有一个我必须在我的程序中使用的文本文件。我已经创建了 文件阅读器,用于显示文件的内容。但是,我不想显示所有内容,而是显示单词数。
例如,我的名为database的文件是一个显示每个人价格的文件,有四行显示名称,年龄,活动和价格。我想创建一份报告,显示篮球运动员的总数和足球运动员的总数,然后显示平均价格。
到目前为止,这是我的代码:
String fileName = "database.txt";
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferReader = new BufferedReader(fileReader);
while ((line = bufferReader.readLine()) != null) {
}
}
我如何计算并添加篮球和足球的总值以获得输出以及获得每项费用并计算总数和平均值?
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
您可能需要查看String#split()。基本上,代码将如下所示:
String[] tokens = line.split(" ");
double value = Double.valueOf(tokens[4]);
String sport = tokens[3];
然后你可以做任何你想要的那些价值观。该方法的官方文档:
围绕给定正则表达式的匹配拆分此字符串。 此方法的作用就像通过调用具有给定表达式和limit参数为零的双参数split方法一样。因此,结尾的空字符串不包含在结果数组中
<强>返回强>: 通过将此字符串拆分为给定正则表达式
的匹配项来计算的字符串数组
答案 2 :(得分:0)
此代码使用Scanner读取文件,然后查找篮球费和足球费的平均值,如果有任何请评论,这是自我解释
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);
}
}