出栈栈空时的if-else必须有返回值的解决办法
出栈栈空时的if-else必须有返回值的解决办法
为了美好的明天 发表于1年前
出栈栈空时的if-else必须有返回值的解决办法
  • 发表于 1年前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

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

感谢学长的帮助

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 15
博文 365
码字总数 142088
×
为了美好的明天
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: