21xrx.com
2024-11-05 12:17:28 Tuesday
登录
文章检索 我的文章 写文章
Java实现读取文件获取学生最高分和最低分
2023-06-14 20:41:24 深夜i     --     --
Java 文件读取 最高分 最低分 Map对象

Java是一门常用的编程语言,它不仅可以实现基本的计算和逻辑判断,还可以通过读取文件等操作实现更加复杂的功能。本文将详细介绍如何使用Java从文件中读取学生的成绩并获取最高分和最低分。

在实现前,我们首先要明确数据存放的方式。本文以文本文件的形式存放学生的成绩,每个学生的成绩格式为“姓名,分数1,分数2,…,分数n”,多个学生的成绩以换行符分割。

下面是Java代码实现的步骤:

1. 创建File对象,指定所要读取的文件路径和文件名。

2. 创建BufferedReader对象,将文件读取到内存中。

3. 使用String的split()方法将每行成绩按“,”拆分成数组。

4. 遍历数组,将姓名和成绩分别存储到Map对象中,其中姓名为Key,成绩为Value。

5. 遍历Map对象,获取最高分和最低分。

下面是示例代码:


import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

public class Main {

  public static void main(String[] args) {

    // 创建File对象

    File file = new File("scores.txt");

    // 创建Map对象

    Map scoresMap = new HashMap<>();

    try {

      // 创建BufferedReader对象

      BufferedReader reader = new BufferedReader(new FileReader(file));

      // 读取文件并将成绩存储到Map对象中

      String line;

      while ((line = reader.readLine()) != null) {

        String[] parts = line.split(",");

        int sum = 0;

        for (int i = 1; i < parts.length; i++) {

          sum += Integer.parseInt(parts[i]);

        }

        scoresMap.put(parts[0], sum);

      }

      // 关闭BufferedReader对象

      reader.close();

    } catch (IOException e) {

      e.printStackTrace();

    }

    // 获取最高分和最低分

    int maxScore = 0;

    int minScore = Integer.MAX_VALUE;

    String maxName = "";

    String minName = "";

    for (Map.Entry entry : scoresMap.entrySet()) {

      if (entry.getValue() > maxScore) {

        maxScore = entry.getValue();

        maxName = entry.getKey();

      }

      if (entry.getValue() < minScore) {

        minScore = entry.getValue();

        minName = entry.getKey();

      }

    }

    // 输出结果

    System.out.println("最高分:" + maxScore + ",姓名:" + maxName);

    System.out.println("最低分:" + minScore + ",姓名:" + minName);

  }

}

通过以上步骤,我们可以使用Java从文件中获取学生的最高分和最低分。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复