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

[Java]PTA:jmu-Java-06异常-ArrayIntegerStack异常改进版

改造接口章节的ArrayIntegerStack,为其pop()、push()、peek()方法添加出错时抛出异常的功能。

ArrayIntegerStack类内部使用数组实现。创建时,可指定内部数组大小。

属性:

int capacity;//代表内部数组的大小 int top;//代表栈顶指针。栈空时,初始值为0。 Integer[] arrStack;//用于存放元素的数组

方法:

public Integer push(Integer item); //如果item为null,则不入栈直接返回null。如果栈满,抛出FullStackException(系统已有的异常类)。 public Integer pop(); //出栈。如果栈空,抛出EmptyStackException,否则返回 public Integer peek(); //获得栈顶元素。如果栈空,抛出EmptyStackException。

思考:

使用异常而不是通过返回null来提示用户程序出错有什么好处?

1. 语义更精准,可以区分是合法空值还是程序错误。直接返回 null 无法区分是业务上的合法空值还是程序的错误,而异常能精准标识出错原因:
以栈的 pop() 为例:
若用 null 表示 “栈空”:调用方看到 null,无法判断是 “栈空(错误)” 还是 “栈顶元素本身就是 null(合法场景,比如入栈过 null)”;
若用 EmptyStackException:直接标识 “栈空” 这一错误场景,和 “栈顶元素为 null” 完全区分,语义无歧义。
2. 强制错误处理,避免由于忽略而产生的错误。

裁判测试程序:

class ArrayIntegerStack implements IntegerStack{ private int capacity; private int top=0; private Integer[] arrStack; /*其他代码*/ /*你的答案,即3个方法的代码*/ }

代码如下:

public Integer push(Integer item) { if(item==null) return null; else{ if(capacity==top) { throw new FullStackException(); }else{ arrStack[top]=item; top+=1; return item; } } } public Integer pop(){ if(top==0) { throw new EmptyStackException(); }else{ int result=arrStack[top-1]; top--; return result; } } public Integer peek() { if(top==0) throw new EmptyStackException(); else{ int a=arrStack[top-1]; return a; } }
http://www.cnnetsun.cn/news/169606.html

相关文章:

  • 9、高级 Active Directory 配置与复制管理全解析
  • Magistral-Small-1.2:多模态推理新升级
  • 6、Windows 操作系统架构与网络通信详解
  • 7、Windows网络与RPC编程全解析
  • 9、RPC 通信基础设施设计与实现
  • 15、Windows管道通信:命名管道与匿名管道详解
  • 16、Windows NT 中的命名管道与邮件槽通信技术详解
  • 25、网络编程中的Windows NT技术解析
  • Linly-Talker如何确保用户上传肖像的安全性?
  • Qwen3Guard-Stream-4B:流式三级实时风险监测
  • Linly-Talker支持暗黑主题UI界面吗?
  • Linly-Talker在高校招生宣传中的创新应用案例
  • Linly-Talker支持多轮对话上下文理解吗?
  • Gemma 3 270M:轻量级多模态文本生成模型
  • Linly-Talker镜像提供SLA服务保障承诺
  • python django flask中小学生成长考勤档案管理系统的设计与实现_a028i958--论文
  • gpt-oss-120b量化版:低资源高性能推理
  • 5、计算机系统的多维度剖析:从基础组件到应用环境
  • 大模型学习基础(六) 强化学习(Reinforcement Learning,RL)初步1.4
  • 腾讯混元3D-Part:AI驱动3D部件智能生成与分割
  • 6、DevOps环境的运营能力与技能需求
  • 8、SQL Server 数据存储与性能监控指南
  • 12、PowerShell远程处理:端点配置与故障诊断
  • 21、Windows PowerShell:技术与业务价值的完美融合
  • 66、优化Windows计算机性能全攻略
  • Step3:321B参数多模态推理新标杆
  • ByteFF2:量子力学驱动的通用力场模型
  • Linly-Talker能否用于法律咨询助手?律师团队试用反馈
  • Linly-Talker支持移动端适配吗?答案在这里
  • MachineLearningLM:千例上下文表格学习新突破