文档章节

出栈栈空时的if-else必须有返回值的解决办法

不开心的时候不要学习
 不开心的时候不要学习
发布于 2017/02/24 08:49
字数 387
阅读 9
收藏 0
点赞 0
评论 0

今天在写栈的操作的时候,在出栈方法哪里有一个问题。就是当栈空时的处理,因为栈空你没有数据可以返回,但是此方法的是有返回值的所以if里即使判断栈空也需要返回数据。 1、程序简单要求不高的时候用System.exit(1);就可以来解决此问题。

public int pop() {
        if (isEmpty()) {
            System.out.println("栈为空");
            System.exit(1);// 栈为空时结束程序
            // 因为此方法的返回值为int(有返回值)所以if里即使判断栈空也需要返回数据System.exit(1);就是用来解决这个问题的
        }
        return (array[top--]);

    }

如果只是一个简单的栈的操作演示这样没有问题,但是当这只是一个程序的一部分时就会遇到下面的问题。看下面的System.out.println(“test”);就会因为程序的结束无法执行到。

public static void main(String[] args) {
        ArrayStack stack = new ArrayStack();
        for (int i = 0; i <stack.size+1; i++) {//stack.size就是栈的最大长度,加1之后就到栈空了,无法继续输出。

            System.out.println(stack.pop());
        }
        System.out.println("test");// 测试System.exit(1);方法。如果System.exit(1);执行的话会直接结束程序,下面的代码无法运行。
    }

2、另外一种解决办法 把pop方法改成返回Integer类型,没值的话返回null。然后你要输出之前判断是不是null,不是在输出 这样不用System.exit(1);也解决了

感谢学长的帮助

© 著作权归作者所有

共有 人打赏支持
不开心的时候不要学习
粉丝 23
博文 522
码字总数 170032
作品 0
唐山
程序员
数据结构学习笔记(特殊的线性表:栈与队列)

                     栈与队列 栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表(后进先出)。 队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表...

希希里之海
2017/05/07
0
0
Lua4.0 参考手册(六)5.8-5.14

(接上篇) ------------------- 5.8 执行 Lua 代码 ------------------- 一个宿主程序可以执行写在文件中或在字符串中的 Lua 块,使用下面的函数: int luadofile (luaState L, const char ...

晓寒
2014/11/10
0
0
栈与栈的实现

栈 栈是一种基础的数据结构,只从一端读写数据。基本特点就”后进先出“,例如顺序入栈1,2,3,4,5,再顺序出栈是5,4,3,2,1 栈的基本操作 栈的基本操作有如下几种: 检测栈是否为空 返回栈存储...

月见樽
2017/11/28
0
0
数据结构之栈和队列

数据结构学习继续向前推进,之前对线性表进行了学习,现在我们进入栈和队列的学习。同样我们先学习一些基本概念以及堆栈的ADT. 栈和队列是两种中重要的线性结构。从数据结构角度看,栈和队列...

捕风的xiao_k
2017/05/09
0
0
每天学习一点儿算法--递归

递归是很多算法都使用的一种编程方法。听说递归是一种十分优雅的问题解决办法,可是对于初涉递归的我,还没有形成这种独特的体会。 学习使用递归的关键在于:如何将问题分为基线条件和递归条...

爱吃西瓜的番茄酱
01/09
0
0
【算法系列 二】Stack

栈应用的场景: 1.括号问题 2.后缀表达式 3.深度优先遍历 4.保存现场 1. 给定字符串,仅由“()[]{}”六个字符组成。设计算法,判断该字符串是否有效。 括号必须以正确的顺序配对,如“()”、...

Hosee
2016/03/01
90
0
LeetCode题集整理- 栈、队列、堆

1、预备知识点 栈(Stack)和队列(Queue)是两种操作受限的线性表。 (线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足“...

Blank_佐毅
2017/11/28
0
0
Lua1.1 虚拟机指令分析(二)

(接上篇) > EQOP case EQOP: { Object *l = top-2; Object *r = top-1; --top; if (tag(l) != tag(r)) tag(top-1) = T_NIL; else { switch (tag(l)) { case TNIL: tag(top-1) = TNUMBER; b......

晓寒
2014/09/15
0
0
LinkedList双向链表解析

Queue是队列 add 增加一个元素 offer 添加一个元素并返回true 如果队列已满,则返回false remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 poll 移除并...

icecrea
2017/11/27
0
0
数据结构[Python--Stack] 的应用

难得有些许空闲,看一下Python的数据结构--Stack,现将几个典型示例进行总结! 一、什么是栈 栈是一个有序集合,根据其特性可以称为"先进后出"或"后进先出", 其中添加或删除都发生在同一端,...

jinlinger
2017/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
8分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本支持框架整体介绍篇 180719-Quick-Task 动态脚本支持框架之使用介绍篇 前面两篇博文,主要是整体介绍和如何使用...

小灰灰Blog
11分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
16分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
17分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
21分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
28分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
33分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
37分钟前
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
55分钟前
0
0
2018年7月23日课程

一、LVS-DR介绍 director分配请求到不同的real server。real server 处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了...

人在艹木中
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部