结构体(Java 类)实战题解笔记(持续更新) 📅 发布时间:2026/7/8 9:52:55 👁️ 浏览次数: 前言Java也可以有结构体吗在 Java 中并没有直接的「结构体」概念但可以通过自定义类class实现结构体的核心功能——封装一组具有关联关系的数据。本笔记通过实战题目讲解如何用自定义类存储复杂数据、处理业务逻辑后续可直接沿用该笔记格式补充更多同类题目。题目1歌唱比赛得分统计求最高平均分题目核心需求统计 n 名同学的歌唱比赛得分每位同学有 m 名评委打分得分规则为「去掉一个最高分、一个最低分后求平均值」最终输出所有同学中的最高平均分保留 2 位小数。解题思路封装数据模型定义Student类封装每位同学的评委分数数组、最高分、最低分、总分去高低分后、平均分。初始化数据创建 n 个Student实例每个实例初始化对应长度的评委分数数组。读取并计算数据逐行读取评委打分同时计算该同学的最高分、最低分、原始总分后续扣除高低分计算有效平均分。排序找最大值通过冒泡排序对所有同学的平均分进行升序排列排序后最后一个元素即为最高平均分。格式化输出保留 2 位小数输出结果。核心代码解析packageStruct;importjava.util.Scanner;// 封装学生歌唱比赛数据的类对应结构体功能classStudent{intid;// 可选学生编号本题未要求使用inta[];// 存储m名评委的打分intmax-1;// 最高分初始值低于最小可能得分0intmin11;// 最低分初始值高于最大可能得分10doubleavg;// 有效平均分去高低分后doublesum;// 原始总分所有评委打分之和}publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnsc.nextInt();// 学生人数intmsc.nextInt();// 评委人数Studentsts[]newStudent[n];// 学生数组存储所有学生信息// 步骤1初始化学生数组和每个学生的分数数组for(inti0;in;i){sts[i]newStudent();// 必须实例化每个Student否则会出现空指针异常sts[i].anewint[m];// 初始化每个学生的评委分数数组}// 步骤2读取打分并计算每个学生的核心数据max、min、sum、avgfor(inti0;in;i){for(intj0;jm;j){sts[i].a[j]sc.nextInt();// 读取单个评委打分sts[i].sumsts[i].a[j];// 累加原始总分// 更新最高分和最低分sts[i].maxMath.max(sts[i].a[j],sts[i].max);sts[i].minMath.min(sts[i].a[j],sts[i].min);}// 计算有效总分去掉最高分和最低分sts[i].sum-(sts[i].maxsts[i].min);// 计算有效平均分*1.0 确保除法结果为小数避免整数除法丢失精度sts[i].avgsts[i].sum*1.0/(m-2);}// 步骤3冒泡排序升序将平均分最低的放前面最高的放后面for(inti0;in-1;i){for(intj0;jn-1-i;j){if(sts[j].avgsts[j1].avg){// 交换两个学生对象整体交换无需单独交换每个字段体现类封装的优势Studenttempsts[j];sts[j]sts[j1];sts[j1]temp;}}}// 步骤4格式化输出最高平均分保留2位小数System.out.printf(%.2f\n,sts[n-1].avg);sc.close();}}关键注意点数组初始化Student sts[] new Student[n]仅创建了数组容器每个数组元素Student对象需要单独new Student()实例化否则会抛出NullPointerException。数据类型精度计算平均分时分母是m-2整数需要通过*1.0将分子转为浮点型避免整数除法直接舍弃小数部分导致结果错误。极值初始化最高分max初始化为-1低于最小可能得分 0最低分min初始化为11高于最大可能得分 10确保能被评委打分正确覆盖。输入输出示例输入7 6 4 7 2 6 10 7 0 5 0 10 3 10 2 6 8 4 3 6 6 3 6 7 5 8 5 9 3 3 8 1 5 9 9 3 2 0 5 8 0 4 1 10输出6.00题目2期末考试「旗鼓相当的对手」匹配题目核心需求给定 N 名同学的姓名和语、数、英成绩找出所有「旗鼓相当的对手」组合每科成绩分差均不大于 5总分分差均不大于 10输出时满足字典序第一个姓名字典序 第二个姓名且组合整体按字典序排序。解题思路封装数据模型定义Student2类封装同学的姓名、三科成绩、总分。读取并存储数据读取 N 名同学的信息实例化Student2对象并存入数组输入已按字典序排列数组天然保留该顺序。双重循环匹配组合使用两层循环遍历所有i j的同学组合避免重复组合且保证i在前j在后符合字典序要求。判断对手条件逐一验证三科分差和总分分差的条件满足则输出对应姓名组合。保证输出格式因输入已按字典序排列i j的循环组合直接输出即可满足题目字典序要求。核心代码解析packageStruct;importjava.util.Scanner;// 封装学生期末考试数据的类对应结构体功能classStudent2{Stringname;// 学生姓名intchinese;// 语文成绩intmath;// 数学成绩intenglish;// 英语成绩intsum;// 三科总分}publicclassMain2{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnsc.nextInt();// 学生人数Student2sts[]newStudent2[n];// 学生数组存储所有学生信息// 步骤1读取并初始化所有学生的信息for(inti0;in;i){sts[i]newStudent2();// 实例化每个Student2对象避免空指针异常// 处理换行符问题nextInt()后未读取换行符next()会自动跳过空白字符包括换行、空格此处可省略sc.nextLine()sts[i].namesc.next();// 读取姓名无空格用next()sts[i].chinesesc.nextInt();// 读取语文成绩sts[i].mathsc.nextInt();// 读取数学成绩sts[i].englishsc.nextInt();// 读取英语成绩sts[i].sumsts[i].chinesests[i].mathsts[i].english;// 计算总分}// 步骤2双重循环匹配「旗鼓相当的对手」i j 避免重复组合且符合字典序for(inti0;in;i){for(intji1;jn;j){// 条件1每科成绩分差不大于5booleanchineseOkMath.abs(sts[i].chinese-sts[j].chinese)5;booleanmathOkMath.abs(sts[i].math-sts[j].math)5;booleanenglishOkMath.abs(sts[i].english-sts[j].english)5;// 条件2总分分差不大于10booleansumOkMath.abs(sts[i].sum-sts[j].sum)10;// 满足所有条件输出组合if(chineseOkmathOkenglishOksumOk){System.out.println(sts[i].name sts[j].name);}}}sc.close();}}关键注意点避免重复组合使用i j的循环逻辑外层i从 0 到 n-1内层j从i1到 n-1既不会出现i,i自身组合也不会出现j,i与i,j重复的组合。字典序保证题目明确输入姓名按字典序排列数组存储顺序与输入顺序一致i j对应的sts[i].name字典序必然小于sts[j].name直接输出即可满足题目要求。输入读取技巧读取姓名使用sc.next()适用于无空格的字符串nextInt()和next()会自动跳过空白字符换行、空格无需额外处理换行符问题原代码中的if(i0) sc.nextLine()是冗余的可删除。分差计算使用Math.abs()计算绝对值差避免分差为负数导致判断条件错误。输入输出示例输入3 fafa 90 90 90 lxl 95 85 90 senpai 100 80 91输出fafa lxl lxl senpai
前后端分离房屋交易平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程 摘要 随着互联网技术的快速发展和房地产市场的持续繁荣,传统的房屋交易模式逐渐暴露出效率低下、信息不对称等问题。购房者和卖房者需要通过中介机构进行繁琐的沟通,交易流程冗长且成本较高。此外,传统的房屋交易平台多采用前后端耦合的开发… 2026/7/8 8:58:34
【毕业设计】SpringBoot+Vue+MySQL 青年公寓服务平台平台源码+数据库+论文+部署文档 摘要 随着城市化进程加快和青年人口流动频繁,青年公寓租赁需求显著增长。传统租房模式存在信息不对称、流程繁琐、安全性不足等问题,亟需数字化解决方案。青年公寓服务平台整合线上线下资源,提供高效、透明的租赁服务,满足青年群… 2026/5/17 1:34:52
第 9 篇:代理模式 (Proxy) —— 硬件的“防火墙” 专栏导读:代理模式和适配器模式看起来很像(都是包一层),但目的完全不同。适配器是为了**“兼容接口”,代理是为了“控制访问”**。在嵌入式中,代理模式常用于实现:延迟写(Lazy Write)、缓存(Caching)、权限控制(Protection)和磨损均衡(Wear Leveling)。 1. 场景… 2026/7/7 12:29:19
锂离子电池组主动均衡系统设计与实现 1. 项目背景与核心需求 在锂离子电池组应用中,电压平衡是确保电池组安全性和寿命的关键技术。当多个电池串联时,由于制造工艺差异、温度分布不均等因素,各单体电池的充电状态会出现不一致。这种不一致性在充电过程中尤为明显——某些电池可能… 2026/7/8 9:52:55
Unity第三方库集成全攻略:从源码到UPM,解决DLL冲突与跨平台兼容 1. 项目概述:为什么Unity开发者必须掌握第三方库 在Unity项目开发中,尤其是当你从Demo阶段迈向成熟产品时,一个绕不开的话题就是“第三方库”。无论是为了接入一个高效的JSON解析器、一个强大的网络通信框架,还是一个炫酷的视觉特… 2026/7/8 9:52:55
MAX11108A与MK20微控制器构建高精度ADC系统 1. 项目概述:从模拟信号到数字杰作的技术实现在工业控制、医疗设备和消费电子等领域,模拟信号到数字信号的转换(ADC)是连接物理世界与数字系统的关键技术桥梁。MAX11108A作为一款高精度、低功耗的8通道12位ADC芯片,配合… 2026/7/8 9:50:54
深度解析:如何实现城通网盘直连地址智能解析与高速下载 深度解析:如何实现城通网盘直连地址智能解析与高速下载 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 城通网盘直连提取工具通过智能解析技术,帮助用户绕过繁琐的网页跳转&… 2026/7/8 9:50:54
Opus 4.7实测:四道真实工程题检验AI推理保真度 1. 项目概述:这不是一次普通模型更新,而是一次认知边界的松动Opus 4.7上线这件事,在我过去十年跟踪大模型演进的过程中,属于那种“办公室突然安静三秒”的节点。不是因为参数量又涨了几个零——这次连官方都没公布具体规模&#x… 2026/7/8 9:50:54
AlienFX Tools:告别AWCC臃肿,500KB轻量级控制方案全面评测 AlienFX Tools:告别AWCC臃肿,500KB轻量级控制方案全面评测 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 厌倦了Alienware Com… 2026/7/8 9:48:53
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58