当前位置: 首页 > news >正文

课后习题:第九章

一、题目描述

本次编程练习要求使用Scanner类解析字符串 “数学 87 分,物理 76 分,英语 96 分”,从中提取三科成绩数据,并计算出总成绩与平均成绩,最终输出结果。


二、解题思路

  1. 核心问题分析:题目给出的字符串中混合了中文、数字和标点符号,直接截取或分割会比较麻烦。核心需求是从混杂文本中精准提取出三个整数成绩。
  2. 技术选型:选择使用Scanner类的useDelimiter()方法,通过正则表达式设置分隔符,一次性过滤掉所有非数字字符,直接读取分数。
  3. 步骤拆解
    • 定义原始成绩字符串。
    • 创建Scanner对象并设置分隔符为 “非数字字符”。
    • 依次读取三科成绩并保存到变量中。
    • 计算总成绩和平均成绩。
    • 输出各科成绩、总成绩和平均成绩。

三、完整代码

四、代码逐段解析

  1. 导入类与定义类import java.util.Scanner;导入Scanner工具类,用于文本解析。public class Score定义了程序的主类Score,类名与文件名保持一致。
  2. 主方法入口public static void main(String[] args)是 Java 程序的入口方法,所有代码逻辑都写在这个方法内。
  3. 定义原始字符串String Str = "数学87分,物理76分,英语96分";定义了需要解析的原始成绩字符串。
  4. 创建 Scanner 并设置分隔符Scanner sc = new Scanner(Str).useDelimiter("[^0-9]+");创建Scanner对象,并设置正则分隔符[^0-9]+,该表达式表示 “匹配一个或多个非数字字符”,这样所有文字和标点都会被当作分隔符处理。
  5. 提取成绩数据通过三次sc.nextInt()方法,依次读取并存储数学、物理、英语三科的成绩到变量中。
  6. 计算总成绩与平均分int total = math + physics + english;计算三科成绩的总和。double average = total / 3.0;计算平均成绩,使用3.0而非3,避免整数除法导致的精度丢失。
  7. 输出结果使用System.out.println()输出各科成绩和总成绩,使用System.out.printf()输出平均成绩,确保输出格式清晰易读。
  8. 关闭 Scannersc.close();关闭Scanner对象,释放资源。

    五、心得体会

    这次编程练习让我对Scanner类的应用场景有了更深入的理解。之前我只知道Scanner可以用来读取控制台输入,没想到它还能直接处理字符串,通过自定义分隔符实现高效的文本解析,这让我对 Java 工具类的灵活性有了新的认识。

    一开始我也考虑过用substring()手动截取字符串,但需要反复计算每个数字的位置,不仅代码繁琐,而且一旦字符串格式有细微变化就会出错。而使用Scanner结合正则分隔符的方式,代码变得简洁高效,鲁棒性也更强,只要字符串中包含数字就能正确提取,不用再担心下标计算错误的问题。

    同时,这次练习也让我注意到了浮点数除法的细节。一开始我不小心写成了total / 3,结果平均成绩直接变成了整数,丢失了小数部分。后来改成total / 3.0才得到了正确的浮点数结果,这让我意识到 Java 中整数除法和浮点数除法的区别,以后在处理数值计算时会更加注意精度问题。

    通过这道题,我不仅掌握了Scanner解析字符串的技巧,也体会到了正则表达式在文本处理中的强大作用,为以后处理类似的混杂文本解析问题打下了基础。

http://www.zskr.cn/news/1509300.html

相关文章:

  • 2026年电渗析定制厂家深度对比:技术、工程与性价比的全面分析 - 优质品牌商家
  • G-Helper:华硕笔记本性能调校的革命性开源方案
  • 2026年6月医院消毒监测厂商怎么选,动物房试验/洁净工作台检测/卫生安全评价报告整体解决方案,医院消毒监测厂家哪家强 - 品牌推荐师
  • 2026 南通卫生间漏水不用砸砖?微创补漏靠谱方案 - 苏易修缮
  • 2026年芝麻灰路沿石厂家电话怎么找?五莲石材产业园五大企业横向分析 - 优质品牌商家
  • AJ-Captcha:企业级行为验证码架构设计与技术实现深度解析
  • 2026年常州合同纠纷律师怎么选?看这五个关键点不踩雷 - 本地品牌推荐
  • 【毕业设计】基于Android的陪诊护理系统APP的设计与实现医院陪诊护理移动端系统设计(源码+文档+远程调试,全bao定制等)
  • 探索SkyWater PDK:开源芯片设计的工艺设计套件深度解析
  • 给UART RX加个10K上拉电阻,可能是解决嵌入式设备启动玄学问题的最便宜方案
  • 从RTL到流片:CEVA BX2软核DSP的完整SoC集成避坑指南与工具链实战
  • 别再只看主频了!手把手教你用FLOPS公式,算出你的CPU/GPU真实算力(附Intel/AMD/NVIDIA实例)
  • 技巧科普:deepseek 流程图怎么导出?依托 AI 导出鸭一站式破除各类流程图导出阻碍 - AI火狐
  • 量子增强AI:NISQ时代混合架构的工程实践指南
  • 量子Walsh-Hadamard变换原理与信号处理应用
  • 从亚稳态到时序收敛:一个真实IP集成案例中的Multi-Cycle Path约束实战
  • 1039市场采购和一般贸易出口,到底怎么选?| 六个维度对比分析 - 欢欢在创业
  • 2026精选:从化区城郊下水道疏通机构综合对比 居顺联家政疏通优先推荐指南 - 居顺联家政疏通
  • 氮化镓充电器67W小冰雹避坑:分配不明、协议不全、散热不佳需留意
  • 从握手到传输:拆解AXI协议的VALID/READY机制,看它如何提升FPGA设计效率
  • 2026年6月纪念馆展柜厂家定制解答:核心问题与价格逻辑解析 - 奔跑123
  • 3步搭建私有知识库:AnythingLLM本地部署与性能优化实战
  • 从一次CTF赛题绕过ASLR的经历,聊聊现代攻击手法与防御演进
  • 宜昌市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • AES加密解密硬件实现详解-完整代码(6):my_bit8_mixcolum.v
  • 2026年河南专业艺考画室怎么选?——基于师资、成绩、服务与区域覆盖的综合分析 - 优质品牌商家
  • watch mtapi.mt5.MT5API OrderSend ‘{params, returnObj}‘ -x 3 会显示3个返回
  • 通辽市黄金回收白银回收铂金回收彩金回收靠谱门店TOP排行榜及联系方式地址电话+诚信店铺推荐 - 大熊猫898989
  • 从零开始:Python爬虫实战——爬取豆瓣读书评分9.0以上高分图书(完整教程)
  • 2026四川全新料PP打包带选型指南:半自动全自动打包机适配与常见问题分析