java用list集合存储学生信息并算出成绩平均值操作

所属分类: 软件编程 / java 阅读数: 132
收藏 0 赞 0 分享

需求

键盘输入五名学生信息并录入list集合;

输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值;

计算并输出他们Java语言成绩的最大值和最小值。

思路

用Scanner 键盘输入

用for循环依次录入学生信息

用for循环输出学生信息

用for循环拿出学生成绩并求出成绩平均分

代码

补充知识:java 计算平均值,去除不合理的数据

我就废话不多说了,大家还是直接看代码吧~

package com.ine.tool;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 计算平均值,去除不合理的数据
 * 
 * @author Ro
 * 
 */
public class AverageTool
{
  /**
   * 主方法
   */
  public static int getAverage(String str_int_arr)
  {
    int[] int_arr = stringToIntWhitSort(str_int_arr.split(","));
    if (1 < int_arr.length)
    {
      return getAverageByGoodList(getGoodListByBaseList(getBaseListByIntArray(int_arr)));
    }
    return Integer.parseInt(str_int_arr);
  }

  /**
   * 将String数组转换为int数组
   */
  private static int[] stringToIntWhitSort(String[] arrs)
  {
    int[] ints = new int[arrs.length];
    for (int i = 0; i < arrs.length; i++)
    {
      ints[i] = Integer.parseInt(arrs[i]);
    }

    Arrays.sort(ints);
    System.out.println("ints:" + Arrays.toString(ints));
    return ints;
  }

  /**
   * 将int数组根据计算的基准值按块分离
   */
  private static List<List<Integer>> getBaseListByIntArray(int[] int_arr)
  {
    List<List<Integer>> list = new ArrayList<List<Integer>>();
    list.add(new ArrayList<Integer>());

    int list_index = 0;
    int average_flag = 0;
    int sum_temp = 0;

    for (int i : int_arr)
    {
      sum_temp += i;
    }
    average_flag = sum_temp / int_arr.length;

    System.out.println("average_flag:" + average_flag);
    for (int i = 0; i < int_arr.length - 1; i++)
    {
      if (average_flag >= Math.abs(int_arr[i] - int_arr[i + 1]))
      {
        list.get(list_index).add(int_arr[i]);
      }
      else
      {
        list.get(list_index++).add(int_arr[i]);
        list.add(new ArrayList<Integer>());
      }

      if ((i + 2) == int_arr.length)
      {
        list.get(list_index).add(int_arr[i + 1]);
      }
    }
    System.out.println("getBaseListByIntArray:" + list.toString());
    return list;
  }

  /**
   * 筛选留下数据最多的块
   */
  private static List<List<Integer>> getGoodListByBaseList(
      List<List<Integer>> list)
  {
    if (1 < list.size())
      for (int i = 1; i < list.size(); i++)
      {
        if (list.get(0).size() != list.get(i).size())
        {
          if (list.get(0).size() < list.get(i).size())
          {
            list.remove(0);
          }
          else
          {
            list.remove(i);
          }
          i--;
        }
      }
    System.out.println("getGoodListByBaseList:" + list.toString());
    return list;
  }

  /**
   * 将块计算平均值,如果数据大于两位,则个位四舍五入
   */
  private static int getAverageByGoodList(List<List<Integer>> good_list)
  {
    int average = 0;
    int sum_temp = 0;
    int sum_index = 0;
    for (List<Integer> t_list : good_list)
    {
      for (int i : t_list)
      {
        sum_temp += i;
        sum_index += 1;
      }
    }
    average = sum_temp / sum_index;
    if (10 < average)
      average = (average + 5) / 10 * 10;
    return average;
  }
}

以上这篇java用list集合存储学生信息并算出成绩平均值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Java实现一个简单的文件上传案例示例代码

这篇文章主要介绍了Java实现一个简单的文件上传案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解在spring中使用JdbcTemplate操作数据库的几种方式

这篇文章主要介绍了详解在spring中使用JdbcTemplate操作数据库的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

java中的switch case语句使用详解

这篇文章主要介绍了java中的switch case语句使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

深入理解Java 线程池

这篇文章主要介绍了Java 线程池的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

详解mybatis #{}和${}的区别、传参、基本语法

这篇文章主要介绍了mybatis #{}和${}的区别、传参、基本语法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)

这篇文章主要介绍了MyBatis 中 ${}和 #{}的正确使用方法,本文给大家提到了MyBatis 中 ${}和 #{}的区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Mybatis中的 ${} 和 #{}区别与用法

这篇文章主要介绍了Mybatis中的 ${} 和 #{}区别与用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Maven安装过程图文详解

这篇文章主要介绍了Maven安装过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

SpringBoot登录拦截配置详解(实测可用)

这篇文章主要介绍了SpringBoot登录拦截配置详解(实测可用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JAVA 内存溢出案例汇总

这篇文章主要介绍了JAVA 内存溢出案例的汇总,文中讲解非常细致,帮助各位工作学习时避免内存溢出,感兴趣的朋友可以了解下
收藏 0 赞 0 分享
查看更多