news 2026/3/3 3:51:19

[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/2/28 12:47:40

9、高级 Active Directory 配置与复制管理全解析

高级 Active Directory 配置与复制管理全解析 1. 命令行管理复制活动介绍 在 Active Directory 环境中,通过命令行工具管理复制是一项重要技能。下面以 Activity 2 - 7 为例,详细介绍如何使用 repadmin 和 dcdiag 这两个命令行程序来管理复制。 - 活动概述 - 所需…

作者头像 李华
网站建设 2026/3/1 17:15:31

Magistral-Small-1.2:多模态推理新升级

Mistral AI推出Magistral-Small-1.2模型,首次实现240亿参数级模型的多模态能力与本地高效部署,标志着轻量化大模型在推理与视觉理解领域的重要突破。 【免费下载链接】Magistral-Small-2509-FP8-torchao 项目地址: https://ai.gitcode.com/hf_mirrors…

作者头像 李华
网站建设 2026/2/27 23:22:16

6、Windows 操作系统架构与网络通信详解

Windows 操作系统架构与网络通信详解 1. Windows 操作系统概述 在企业环境中,大多数计算机都安装了某种版本的 Windows 操作系统。尽管运行 Windows 3.0 的机器越来越少,但仍有许多工作站使用 Windows 3.1 或 Windows for Workgroups 3.1/3.11(WFW),我们通常将这些 Wind…

作者头像 李华
网站建设 2026/3/1 8:25:05

7、Windows网络与RPC编程全解析

Windows网络与RPC编程全解析 1. Windows操作系统模式与网络架构 Windows(3.0/3.1版本)有三种操作模式,分别是实模式、标准模式和增强模式。Windows for Workgroups 3.11 是Windows 3.x 系列中最具网络功能的版本。 标准模式和增强模式的Windows for Workgroups(WFW)都内…

作者头像 李华
网站建设 2026/2/28 10:51:35

9、RPC 通信基础设施设计与实现

RPC 通信基础设施设计与实现 1. RPC 数据传输与类型问题 RPC(远程过程调用)在数据传输时,每个远程函数的数据参数需要明确无误。开发者可使用特殊属性(如 [string] )来强类型化远程函数的参数。应用程序设计者还需特别注意数据在客户端和服务器之间传输时的编组和解组…

作者头像 李华
网站建设 2026/3/2 19:30:53

15、Windows管道通信:命名管道与匿名管道详解

Windows管道通信:命名管道与匿名管道详解 1. 命名管道的模拟与安全控制 命名管道是Windows系统中一种重要的进程间通信(IPC)机制。在 NamedPipe_ThreadRoutine 函数中,展示了命名管道的基本使用流程: NamedPipe_ThreadRoutine ( ) {HANDLE hNamedPipe ; BOOL fRe …

作者头像 李华