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

需求

键盘输入五名学生信息并录入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集合存储学生信息并算出成绩平均值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java LinkedList集合功能实例解析

    由于LinkedList底层数据结构是链表,因此有一些特有的功能从链表对应到集合中. 框架代码: public class LinkedListDemo { public static void main(String[] args) { //创建集合对象 LinkedList<String> linkedList = new LinkedList<String>(); //添加元素 linkedList.add("hello"); linkedList.add

  • java list用法示例详解

    |--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引,  |-- ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步  |-- LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)  |-- Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了

  • java8实现list集合中按照某一个值相加求和,平均值等操作代码

    集合: List<User> user = new User(); user .stream().collect(Collectors.summingInt(User::getAge)) 参数类型: summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值 summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值 summarizingLong 统计数据(long)状态, 其中包括c

  • Java中List集合的遍历实例详解

     一.对List的遍历有三种方式   List<String> list = new ArrayList<String>(); list.add("testone"); list.add("testtwo"); ... 第一种: for(Iterator<String> it = list.iterator(); it.hasNext(); ) { .... } 这种方式在循环执行过程中会进行数据锁定,    性能稍差,    同

  • java中list的用法和实例讲解

    目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引位置重新生成一个新的list(截取集合): 对比两个list中的所有元素: 判断list是否为空: 返回Iterator集合对象: 将集合转换为字符串: 将集合转换为数组: 集合类型转换: 去重复: 备注:内容中代码具有关联性. 1.list中添加,获取,删除元素: 添加方法是:.add(e): 获

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

    需求 键盘输入五名学生信息并录入list集合; 输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值: 计算并输出他们Java语言成绩的最大值和最小值. 思路 用Scanner 键盘输入 用for循环依次录入学生信息 用for循环输出学生信息 用for循环拿出学生成绩并求出成绩平均分 代码 补充知识:java 计算平均值,去除不合理的数据 我就废话不多说了,大家还是直接看代码吧~ package com.ine.tool; import java.util.ArrayList; im

  • Java案例之HashMap集合存储学生对象并遍历

    一.需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student),存储三个键值对元素,并遍历 分析: 1.定义学生类 2.创建HashMap集合对象 3.创建学生对象 4把学生添加到集合中 5.遍历集合 public class StudentDemo {   public static void main(String[] args) {       //创建Map集合对象       Map<String,Student> m=new HashMap<S

  • 浅谈Java中的集合存储数据后,输出数据的有序和无序问题

    HashSet , TreeSet , 无序是指存储数据的顺序和取出数据的顺序不一致:但是TreeSet 是按照指定的顺序排个序出来: 如果,我们想按照数据输入的顺序依次输出数据(即,如果依次输入4.1.7.3,输出时依次是4.1.7.3),此时需要用LinkedHashMap ,LinkedHashSet package Demo; import java.util.*; import java.util.Map.*; public class DemoMap { public static

  • Java在读取文件内容的时候,如何判断出空白行的操作

    一.问题描述: 在用Java读入文件内容时,往往文件中存在空行,有时候用空行来分割不同属性的内容,这个时候,就有必要把这个空行识别出来,在Java中该如何识别空行呢? 二.案例分析: 数据集为: 第一行信息:节点个数 开始节点 终止节点 第二行信息:空行 第三行到第四十四行信息:边及边的权值 第四十五行信息:空行 第四十六行到第四十七行信息:必过节点 第四十八行信息:空行 第四十九行到第五十行信息:必过边 第五十一行信息:空行 第五十二行到第五十三行信息:不能经过的边 18 S E S N1 3

  • java控制台实现学生信息管理系统(集合版)

    使用java语言用集合存储数据实现学生信息管理系统,在控制台上编译执行 可以实现基本的学生信息增加.删除.修改.查询功能 IO版可以参考我的另外一篇博文. 运行界面如下 欢迎界面 添加学生信息 删除学生信息 修改学生信息 查询学生信息 退出系统 系统模块结构图 系统业务流程图 代码如下 Student类 public class Student { private String stuNo; private String name; private int age; public Student

  • python实现简易的学生信息管理系统

    目录 一.系统功能 二.系统开发环境 三.实现代码 四.项目打包并生成.exe可执行文件 本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下 一.系统功能 1.录入学生信息 2.查找学生信息 3.修改学生信息 4.删除学生信息 5.成绩排序 6.统计学生总人数 7.显示所有学生信息 0.退出系统 二.系统开发环境 1.操作系统:win7 2.开发工具:PyCharm 3.Python内置模块:os,re 三.实现代码 import os filename

  • 用python实现学生信息管理系统

    用Python实现学生信息管理系统,供大家参考,具体内容如下 系统功能有: 1.录入,查找,删除,修改学生信息2.学生成绩排名3.显示全部学生信息 代码如下: filename = 'student.txt' #用于存储学生信息的txt文件名 import os #导入os模块,用于判断路径下文件是否存在 #定义主函数,主函数的作用是通过选择不同的选项进入不同的功能 def main():     while True:         menu()         choice = int(i

  • 学生信息管理系统Python面向对象版

    本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下 """ 程序名称:学生信息管理系统 版本信息:0.1 开发者:飞宇 开始时间:2018.3.23 19:45 版本更新时间:2018.4.2 23:08 格式:IPO OOP面向对象 """ # 学生类 class Student: def __init__(self, stuId, name, age, sex, dept, nation): self.stu

  • python3.6实现学生信息管理系统

    简单版本学生信息管理系统,用python基础语法实现,基于python 3.6 容错率很高的代码,做了很多异常处理功能,出错也不会丢失信息 启动时自动从文件中读取已有学生信息,退出时自动保存 程序分3个模块: Menu:进行菜单管理 Student_managemant:进行学生信息管理 main:主函数 直接上代码,有注释 Menu.py # -*- coding: UTF-8 -*- import sys import os class Menu(): """ 菜单管理类

  • python实现简单学生信息管理系统

    python简单的学生信息管理系统-文件版,供大家参考,具体内容如下 功能如下 主函数部分 增加学生信息 修改学生信息 删除学生信息 查询学生 显示所有学生的信息 将数据录入文件 读取文件数据 学习文件模块后,将之前做的学生信息管理系统添加文件模块. 功能如下 1.新增学生信息: 2.修改学生信息: 3.删除学生信息: 4.查询学生信息: 5.显示学生信息; 6.将数据录入文件: 7.读取文件数据: 8.退出系统. 主函数部分 这里定义一个列表L,用来存储学生信息. 增加学生信息 将学生信息保存

随机推荐