Java数据结构——用栈实现进制转换

public class MyStack {
    private int[] array;
    private static int size;
    private static final int INITSIZE = 100;

    //初始化栈
    public MyStack(){

        array =  new int[INITSIZE];
    }

    //扩容
    private void ensureCapacity(){
        if(size == array.length){
            Arrays.copyOf(array,array.length+(array.length>>1));
        }
    }
    //判断栈空不空
    public boolean isEmpty(){
        return this.size == 0;

    }

    //压栈
    public void push(int value){
        ensureCapacity();
        array[size] = value;
        size++;
    }

    //出栈
    public void pop(){
        if(isEmpty()){
            return;
        }
        size--;
    }

    //返回栈顶元素
        public int peek(){
        if(size == 0){
            throw new EmptyStackException();
        }
        return  array[size-1];
    }
}

进制转换

public class HexTranslated {
    //新建栈
    private MyStack myStack = new MyStack();

    //进制转换
    public void go(int value,int mod){
        //商
        int conslut = value;
        //余数
        int remainder = 0;

        while (conslut >= mod){
            //取余
            remainder = conslut % mod;
            myStack.push(remainder);
            conslut /= mod;
        }
        myStack.push(conslut);

    }

    public StringBuilder show(){
        StringBuilder stringBuilder = new StringBuilder();
        System.out.print("转换结果为: ");
        while (!myStack.isEmpty()){
            stringBuilder.append(myStack.peek()+" ");
            myStack.pop();
        }
        return stringBuilder;
    }


}

测试

public class Test {
    public static void main(String[] args) {
        HexTranslated hexTranslated =  new HexTranslated();
        hexTranslated.go(12,2);
        System.out.println(hexTranslated.show());
        hexTranslated.go(58,8);
        System.out.println(hexTranslated.show());
    }
}

测试结果

在这里插入图片描述

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值