news 2026/6/10 10:37:07

[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/6/10 6:27:46

12、高级 DHCP 和 DNS 配置:高可用性解决方案

高级 DHCP 和 DNS 配置:高可用性解决方案 在网络环境中,DHCP(动态主机配置协议)是一项关键服务,它为客户端设备自动分配 IP 地址等网络配置信息。若 DHCP 服务器无法响应客户端请求,客户端将无法在网络上进行通信。因此,确保 DHCP 服务的高可用性至关重要。本文将介绍 …

作者头像 李华
网站建设 2026/6/10 14:29:38

Linly-Talker如何优化夜间模式下的画面显示?

Linly-Talker 如何优化夜间模式下的画面显示? 在深夜的书桌前,你正通过虚拟助手复习课程。屏幕中的数字人老师语气温和、口型精准,但突然间,那张本该亲切的脸却隐没在昏暗中,背景刺眼的白框让你不得不眯起眼睛——这样…

作者头像 李华
网站建设 2026/6/10 0:20:47

18、基于Mailslot的Win32服务Echo Server实现

基于Mailslot的Win32服务Echo Server实现 1. 引言 在Windows编程中,Mailslot是一种简单而有效的进程间通信(IPC)机制。本文将深入探讨如何在Win32服务中使用Mailslot实现一个Echo Server,该服务器是一个多线程程序,每个线程负责为一个客户端提供服务。 2. Echo Server的…

作者头像 李华
网站建设 2026/6/10 16:03:57

Gemma 3 270M量化版:小模型大能力

Gemma 3 270M量化版:小模型大能力 【免费下载链接】gemma-3-270m-bnb-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/gemma-3-270m-bnb-4bit 导语:Google最新发布的Gemma 3系列中的270M参数模型经Unsloth优化后推出4位量化版本&…

作者头像 李华
网站建设 2026/6/9 20:21:57

Linly-Talker数字人头部转动角度范围有多大?

Linly-Talker数字人头部转动角度范围有多大? 在虚拟主播、智能客服和在线教育日益普及的今天,一个“眼神灵动、举止自然”的数字人早已不再是科幻电影中的幻想。然而,真正让用户感到“像在与真人对话”的关键,并不只在于高清的面容…

作者头像 李华
网站建设 2026/6/10 6:46:06

规模化私域增长?这4个关键数字决定成败

无数据,不私域;无体系,不长久。 我操盘2000万私域用户这些年,发现太多老板踩了同一个坑:把私域当成“人海战术”。结果呢?团队扩张到100人,GMV却纹丝不动(据服务的120企业统计&#…

作者头像 李华