当前位置: 首页 > 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.rkmt.cn/news/129236.html

相关文章:

  • Linly-Talker支持音频降噪预处理吗?提升ASR效果
  • 2025年12月新沂PC砖生产商哪家强? - 2025年品牌推荐榜
  • python django flask餐饮连锁店点餐食材采购管理系统的设计与实现_971i3t7j--论文
  • python django flask高校创新创业课程体系选择系统的设计与实现_学习资源推荐选课系统196muhq--论文
  • Linly-Talker能否接入铁路12306客服系统?
  • 15、Windows管道通信:命名管道与匿名管道详解
  • Linly-Talker能否生成科学家形象讲述前沿科技?
  • 6、Windows 操作系统架构与网络通信详解
  • Ring-flash-2.0:6.1B激活MoE模型推理破百B性能
  • Linly-Talker能否用于监狱服刑人员心理疏导?
  • 计算机毕业设计springboot家乡特色美食推荐系统的设计与实现 SpringBoot驱动的地域风味美食智能推荐平台构建 基于SpringBoot的乡土特色菜品发现与分享系统
  • 7、Windows网络与RPC编程全解析
  • Linly-Talker支持暗黑主题UI界面吗?
  • Linly-Talker在电力巡检机器人中的语音交互应用
  • Linly-Talker如何应对网络波动导致的卡顿问题?
  • Linly-Talker在智慧农业大棚中的语音指导应用
  • Linly-Talker能否生成多个角色切换的剧情视频?
  • Linly-Talker支持多轮对话上下文理解吗?
  • 自动驾驶核心技能:这本Python路径规划书,让算法从“调用”到“掌控”
  • 【期末复习题】-结构类算法题
  • Linly-Talker镜像经过大规模中文语料训练优化
  • 41、PowerShell实用扩展与事件处理
  • Krea Realtime 14B:11fps实时视频大模型
  • GLM-4-9B-0414:小模型大能力,开源新标杆
  • 42、PowerShell 事件处理与 Tab 补全增强工具使用指南
  • Linly-Talker能否生成主持人风格的专业播报?
  • 3、计算机系统架构与操作系统结构解析
  • 规模化私域增长?这4个关键数字决定成败
  • HunyuanImage-3.0:800亿MoE开源多模态图像生成模型
  • Janus-Pro-7B:分离视觉编码的多模态新突破