出栈栈空时的if-else必须有返回值的解决办法
2017-02-22 23:05
176 查看
今天在写栈的操作的时候,在出栈方法哪里有一个问题。就是当栈空时的处理,因为栈空你没有数据可以返回,但是此方法的是有返回值的所以if里即使判断栈空也需要返回数据。
1、程序简单要求不高的时候用System.exit(1);就可以来解决此问题。
如果只是一个简单的栈的操作演示这样没有问题,但是当这只是一个程序的一部分时就会遇到下面的问题。看下面的System.out.println(“test”);就会因为程序的结束无法执行到。
2、另外一种解决办法
把pop方法改成返回Integer类型,没值的话返回null。然后你要输出之前判断是不是null,不是在输出
这样不用System.exit(1);也解决了
感谢学长的帮助
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);也解决了
感谢学长的帮助
相关文章推荐
- 出栈栈空时的if-else必须有返回值的解决办法
- jstl 的<c:if>标签没有else的解决办法
- JSTL 的<c:if>标签没有else的解决办法
- jstl 的<c:if>标签没有else的解决办法
- 没有匹配 if 的非法 else 问题解决办法
- SQL Server 安装时提示挂起的文件操作,必须重启计算机解决办法
- “以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”的解决办法
- asp:(0X80004005)操作必须使用一个可更新的查询”错误的解决办法
- “[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询”的解决办法
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- 操作必须使用一个可更新的查询 解决办法(转)
- asp+access中 打开网页时出现“操作必须使用一个可更新的查询”原因及解决办法
- 错误"操作必须使用一个可更新的查询"原因及解决办法
- MSSQL安装出现 “运行安装程序之前必须重新启动计算机” 的解决办法
- 使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法
- asp中 打开网页时出现“操作必须使用一个可更新的查询”原因及解决办法
- "必须输入正文"BUG的解决办法!
- 错误“操作必须使用一个可更新的查询”原因及解决办法
- FCKEditor使用RequiredFieldValidator验证时必须点击两次的解决办法
- MSSQL安装出现 “运行安装程序之前必须重新启动计算机” 的解决办法