news 2026/4/24 11:29:45

[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/18 14:28:41

Linly-Talker镜像支持Kubernetes集群部署

Linly-Talker 镜像支持 Kubernetes 集群部署 在直播带货、智能客服和远程办公日益普及的今天,企业对“看得见”的交互体验提出了更高要求。用户不再满足于冷冰冰的文字回复或单调的语音播报,而是期待一个能听、会说、有表情的数字人助手——既能理解复杂…

作者头像 李华
网站建设 2026/4/21 8:50:19

计算机毕业设计springboot家乡特色美食推荐系统的设计与实现 SpringBoot驱动的地域风味美食智能推荐平台构建 基于SpringBoot的乡土特色菜品发现与分享系统

计算机毕业设计springboot家乡特色美食推荐系统的设计与实现psst3cf2 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在全球化流动加剧、人口迁移常态化的当下,“舌尖…

作者头像 李华
网站建设 2026/4/21 5:42:41

17、Mailslot编程:原理、实现与优化

Mailslot编程:原理、实现与优化 1. Mailslot简介 Mailslot是一种在Windows系统中用于进程间通信(IPC)的机制,它可以用于设计客户端/服务器应用程序以及需要对等通信的应用程序。Mailslot允许基于数据报的非保证通信,数据报可以定向到特定进程或域中运行的一组进程。 1.…

作者头像 李华
网站建设 2026/4/19 11:02:31

19、Windows网络通信:邮件槽与NetBIOS编程解析

Windows网络通信:邮件槽与NetBIOS编程解析 在Windows网络编程领域,邮件槽(Mailslot)和NetBIOS编程是两个重要的概念。它们为网络通信提供了不同的解决方案,适用于不同的应用场景。下面将详细介绍这两种技术。 邮件槽(Mailslot) 邮件槽是一种应用级的编程结构,用于在…

作者头像 李华
网站建设 2026/4/18 2:38:56

23、深入理解 SPX 编程:原理、应用与示例

深入理解 SPX 编程:原理、应用与示例 1. 引言 在网络编程领域,IPX 编程虽能实现数据报的收发,但因其传输服务的不可靠性,在某些场景下难以满足需求。而 SPX 接口应运而生,它为应用程序提供了可靠的数据传输服务,确保数据的准确送达。本文将深入探讨 SPX 编程的各个方面…

作者头像 李华
网站建设 2026/4/23 10:18:22

24、网络编程中的SPX/IPX、NetBIOS与Windows Sockets多播技术

网络编程中的SPX/IPX、NetBIOS与Windows Sockets多播技术 1. SPX/IPX编程接口概述 SPX/IPX编程接口可用于构建客户端/服务器通信管道。在Novell NetWare环境中,这些接口能为通信提供支持。不过,Novell尚未发布适用于Windows NT NetWare客户端的IPX/SPX接口库和DLL的最终版本…

作者头像 李华