文档章节

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

小黄狗
 小黄狗
发布于 2017/02/24 08:49
字数 387
阅读 9
收藏 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);也解决了

感谢学长的帮助

© 著作权归作者所有

共有 人打赏支持
小黄狗
粉丝 30
博文 578
码字总数 182050
作品 0
唐山
程序员
数据结构学习笔记(特殊的线性表:栈与队列)

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

希希里之海
2017/05/07
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
Lua4.0 参考手册(六)5.8-5.14

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

晓寒
2014/11/10
0
0
【算法系列 二】Stack

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

Hosee
2016/03/01
90
0

没有更多内容

加载失败,请刷新页面

加载更多

5whys分析法在美团工程师中的实践

前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类...

Skqing
24分钟前
1
0
Android 接收监听开机完成,并且开机自启动

1,定义一个广播接收者的类 ,并重写抽象方法 public class BootCompleteReceiver extends BroadcastReceiver 2,在Androidmanifest 注册 <receiver android:name=".receiver.BootCompleteRece......

lanyu96
28分钟前
2
0
小程序记录

1、button的边框、角等需要在伪元素after修改去除

originDu
30分钟前
1
0
微博什么技术啊……还说支持八个明星并发出轨,结果…

是的,大家可能都知道了,女神张靓颖结婚了。。 我去,写错了,是————赵丽颖。 为什么我头脑一瞬间出现的是张靓颖,作为一个码农,技术宅,拼音缩小都是 ZLY,博主我真有点傻傻分不清楚了...

Java技术栈
30分钟前
10
0
模块化

1,什么是模块化? 模块化是指将一个复杂的系统分解为多个模块,方便编码。 2,为什么要用模块化? 降低复杂性,降低代码耦合度,部署方便,提高效率。 3,模块化的好处? a,避免命名冲突,减少...

羊皮卷
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部