我有一项家庭作业,要从包含篮球运动员每场比赛的姓名和得分的文件中读取数据。该程序应该输出玩家的姓名和得分,并统计每个玩家每场比赛的平均得分,最后显示平均得分最高的玩家。我目前正致力于获取每个玩家的平均值和换行符。
Here is a pic我正在从中读取数据的输入文件的名称。
这是我的代码:
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.io.IOException;
public class BasketballTeam
{
public static void main(String[] args) throws IOException
{
File f = new File("BasketballData.txt");
if (f.exists())
{
Scanner input = new Scanner(f);
int games = 0;
int totalScore = 0;
double avg = 0.0;
while (input.hasNext())
{
String s = input.next();
System.out.printf("%-9s", s);
int a = input.nextInt();
while (input.hasNextInt())
{
if (a == -1)
{
avg = (double)totalScore/games;
System.out.printf("%14s%.2f\n", "Average of ", avg);
games = 0;
totalScore = 0;
s = input.next();
}
else
{
System.out.printf("%5s", a);
games++;
totalScore = totalScore + a;
a = input.nextInt();
}
}
}
}
}
}
当我运行该程序时,我的输出只是一行,如下所示:
Smith 13 19 8 12Badgley 5Burch 15 18 16Watson......and so on
为什么我没有得到任何换行符或平均值?我希望我的输出如下所示:
Smith 13 19 8 12 Average of 13
Badgley 5 Average of 5
Burch 15 18 16 Average of 16.33
.....and so on
提前感谢您的任何建议/更正。
最佳答案
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class BasketballTeam
{
public static void main(String[] args) throws IOException
{
File f = new File("BasketballData.txt");
if (f.exists())
{
Scanner input = new Scanner(f);
int games = 0;
int totalScore = 0;
double avg = 0.0;
while (input.hasNext())
{
String s = input.next();
System.out.printf("%-9s", s);
while (input.hasNextInt())
{
int a = input.nextInt();
if(a != -1)
{
System.out.printf("%5s", a);
games++;
totalScore = totalScore + a;
}
}
avg = (double)totalScore/games;
System.out.printf("%14s%.2f\n", "Average of ", avg);
games = 0;
totalScore = 0;
System.out.println();
}
input.close();
}
}
}
这就是您正在寻找的东西。您甚至不需要文件中每行末尾的 -1,如果您愿意,可以将其删除,除非它是规范的一部分。没有 -1 也可以工作。您的内循环只需将总计加起来,然后在内循环之外获取平均值并显示。然后重置你的变量。你已经非常接近了,只需要改变一些事情。如果您对其工作原理有任何疑问,请直接询问。希望这有帮助!
关于java - 文件 I/O 遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615355/