用数组模拟栈

package day7;

import java.util.Scanner;

public class stack {
//测试
public static void main(String[] args) {
    arrarystack arrarystack = new arrarystack(4);
    String key;
    boolean loop =true;
    Scanner scanner = new Scanner(System.in);
    while (loop){
        System.out.println("show:表示显示栈");
        System.out.println("exit:退出程序");
        System.out.println("push:入栈");
        System.out.println("pop:出栈");
        System.out.println("请输入你的选择");
        key =scanner.next();  //输入了一个字符串
        switch (key){
            case "show":
                arrarystack.list();
                break;
            case "exit":
scanner.close();
loop =false;
break;

            case "push":
                System.out.println("请输入要入栈的数");
                int value=scanner.nextInt();
                arrarystack.push(value);
                break;
            case "pop":
        try {


                int pop = arrarystack.pop();
                System.out.printf("弹出的数据为%d",pop);
                System.out.println();

        }catch (Exception e){
                System.out.println(e.getMessage());

                    }
                break;
            default:
                break;
        }
//        思考:如果在方法中有异常处理,则在调用它的时候也要做捕捉异常的处理。

    }
    System.out.println("程序推出了");
}



}

//创建栈的属性,构造器
//1.判断栈空 2判断栈满   3.出栈 4.入栈  5.遍历栈
class arrarystack{
    private int maxsize;
    private int top=-1;
    int[]  stack1;   //存放栈的数组


    public arrarystack(int maxsize) { //构造函数
        this.maxsize = maxsize;
        stack1 = new int[maxsize];
    }
//    判断栈空
    public boolean isempty(){
        return top==-1;
    }
//    判断为满
    public boolean isfull(){
        return top+1==maxsize;
    }
//   出栈
    public int pop(){
        if (isempty()){
            throw new RuntimeException("为空");
        }
//       出栈就是将栈顶的元素
        int temp =stack1[top];
        top--;
        return temp;
//        return语句要在最后 所以要一个零时变量来存储栈的值
    }
//    入栈
    public void push(int value){
        if (isfull()){
            System.out.println("栈满");
            return;
        }
        top++;
        stack1[top]=value;
    }
//   遍历
    public void list(){
        if (isempty()){
            System.out.println("为空,没有数据");
        }
        for (int i=top;i>=0;i--){
            System.out.printf("stack1[%d]=%d",i,stack1[i]);
            System.out.println();
        }
    }
}
// 当方法不为void时, throw new exception()   因为不能return;结束判断
//当方法为void时,system out.pringln()  return;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值