您的位置:首页 > 其它

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

2017-02-24 00:00 239 查看
今天在写栈的操作的时候,在出栈方法哪里有一个问题。就是当栈空时的处理,因为栈空你没有数据可以返回,但是此方法的是有返回值的所以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);也解决了

感谢学长的帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐