当前位置: 首页 > 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.jsqmd.com/news/117264/

相关文章:

  • Linly-Talker能否生成航天工程师形象讲解火箭发射?
  • 53、FTDI设备使用与驱动配置全解析
  • 2025年12月新沂PC砖生产商哪家强? - 2025年品牌推荐榜
  • 54、第三方FTDI应用模块与自定义流驱动开发
  • 13、Windows Socket编程:从基础到应用的深度解析
  • python django flask餐饮连锁店点餐食材采购管理系统的设计与实现_971i3t7j--论文
  • python django flask高校创新创业课程体系选择系统的设计与实现_学习资源推荐选课系统196muhq--论文
  • 55、嵌入式系统开发:FTDI设备与托管代码集成
  • Linly-Talker能否接入铁路12306客服系统?
  • 14、Windows NT管道编程全解析
  • Linly-Talker支持灰度发布新功能吗?企业运维友好
  • 56、嵌入式开发:Compact 7 集成管理代码与虚拟 PC 配置全攻略
  • 15、Windows管道通信:命名管道与匿名管道详解
  • Linly-Talker表情库包含多少种基本情绪?
  • 57、Windows Embedded Compact 7开发资源与硬件选择全解析
  • Linly-Talker如何控制生成视频的文件大小?
  • Linly-Talker能否生成科学家形象讲述前沿科技?
  • [Java]PTA:jmu-Java-06异常-finally
  • Linly-Talker能否用于聋哑人手语翻译辅助?
  • Magistral-Small-1.2:多模态推理新升级
  • Ring-flash-2.0:6.1B激活MoE模型推理破百B性能
  • 6、Windows 操作系统架构与网络通信详解
  • 50、Windows Embedded Compact 7 中 USB 相机应用全解析
  • Linly-Talker能否用于法庭庭审记录回放系统?
  • Linly-Talker能否用于监狱服刑人员心理疏导?
  • 51、嵌入式设备开发:USB 摄像头、网络投影仪与 Phidgets 设备应用
  • 计算机毕业设计springboot家乡特色美食推荐系统的设计与实现 SpringBoot驱动的地域风味美食智能推荐平台构建 基于SpringBoot的乡土特色菜品发现与分享系统
  • Linly-Talker在智能车载系统中的语音助手应用
  • 7、Windows网络与RPC编程全解析
  • Linly-Talker能否生成动物拟人化形象?创意内容新方向