news 2026/4/15 15:29:09

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[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; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 4:23:39

Linly-Talker镜像提供详细中文文档和示例代码

Linly-Talker:一键部署的中文数字人系统如何重塑人机交互 你有没有想过,只需要一张照片和一段文字,就能让一个虚拟人物“活”起来,开口为你讲解课程、播报新闻,甚至进行实时对话?这听起来像是科幻电影中的场…

作者头像 李华
网站建设 2026/4/13 17:09:03

13、Windows Socket编程:从基础到应用的深度解析

Windows Socket编程:从基础到应用的深度解析 1. 客户端连接检查与非阻塞编程 在网络编程中,确保与客户端的连接稳定至关重要。可以通过 CheckConnection 函数来检查与客户端的连接状态。以下是该函数的示例代码: void CheckConnection (HWND hWnd, SOCKET soc, SOCKET…

作者头像 李华
网站建设 2026/4/9 11:16:38

Linly-Talker在智慧农业大棚中的语音指导应用

Linly-Talker在智慧农业大棚中的语音指导应用 在广袤的农田与现代化温室之间,一场静默却深刻的变革正在发生。当一位年过半百的菜农站在黄瓜架前,用带着浓重方言的声音问“这叶子白了一片是不是要打药?”时,回应他的不再是翻书查资…

作者头像 李华
网站建设 2026/4/12 22:20:14

Linly-Talker支持语音唤醒功能吗?类似Siri体验

Linly-Talker 能否实现“说一句就醒”的语音唤醒体验? 在智能音箱普及的今天,我们早已习惯了对设备喊一声“嘿 Siri”或“小爱同学”,就能立刻唤醒一个随时待命的数字助手。这种“始终在线、听觉优先”的交互方式,正悄然成为人机沟…

作者头像 李华
网站建设 2026/4/12 23:37:43

DeepSeek-V3.1:混合思维模式提升效率与智能

DeepSeek-V3.1:混合思维模式提升效率与智能 【免费下载链接】DeepSeek-V3.1-Base-BF16 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/DeepSeek-V3.1-Base-BF16 大语言模型领域再迎新突破——DeepSeek-V3.1正式发布,通过创新的混合思维模…

作者头像 李华
网站建设 2026/4/1 19:27:49

Emu3.5:原生多模态模型的世界建模革命

导语:BAAI团队推出的Emu3.5模型以"统一世界建模"为核心,通过原生多模态架构和创新推理技术,重新定义了AI理解与生成视觉-文本内容的能力边界。 【免费下载链接】Emu3.5 项目地址: https://ai.gitcode.com/BAAI/Emu3.5 行业…

作者头像 李华