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());
    }
}

测试结果

经验分享 程序员 微信小程序 职场和发展