java - 文件 I/O 遇到一些问题

标签 java

我有一项家庭作业,要从包含篮球运动员每场比赛的姓名和得分的文件中读取数据。该程序应该输出玩家的姓名和得分,并统计每个玩家每场比赛的平均得分,最后显示平均得分最高的玩家。我目前正致力于获取每个玩家的平均值和换行符。

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/

相关文章:

java - RecyclerView 无限滚动到顶部(聊天应用程序)

java - 用数学方法求解

java - 使用 Google Guava 过滤 JavaBean 列表

java - 如何在 Java Android 中共享/导出 JSON 文件

java - 通过共享菜单从其他应用程序接收文本

c# - .NET 的 ManualResetEvent 和 WaitHandle 的 Java 等价物

java - 为什么我的计数器在每次循环执行代码后没有增加?

java - 类实例化涉及的步骤?

java - JXCollapsiblePane 与 JXMultiSplitPane

java - Reactor 3 中缺少来自 TopicProcessor 的消息