java中十进制转换为任意进制

来源:互联网 发布:北京乐乎公寓怎么样 编辑:程序博客网 时间:2024/05/05 03:37

参考博客:
1.java中十进制转换为任意进制 - cslience的专栏 - CSDN博客
2.java实现栈结构 - 蚂蚁的专栏 - CSDN博客

很多互联网公司都有一个基础题,考你的栈知识的时候随便把进制之间的转换也考一下,所以一般都会出一道”请结合栈知识实现进制之间的转换”

栈的代码:

public class MyStack {    private long[] arr;    private int top = -1;    public MyStack() {        this(10);    }    public MyStack(int init) {        if (init <= 0) {            init = 10;        }        arr = new long[init];    }    public void push(int value) {        if (top == arr.length - 1) {            //扩容            arr = Arrays.copyOf(arr, arr.length * 2);        }        arr[++top] = value;    }    public long pop() {        if (top == -1) {            throw new IndexOutOfBoundsException("栈为空");        }        return arr[top--];    }    public long peek() {        if (top == -1) {            throw new IndexOutOfBoundsException("栈为空");        }        return arr[top];    }    public boolean isEmpty() {        return top == -1;    }    public boolean isFull() {        return top == arr.length - 1;    }}



进制之间+测试代码转换的代码:

public class Test {    public static void main(String... args) {        //求100        MyStack stack = conversion(100, 16);        while (!stack.isEmpty()) {            System.out.print(stack.pop());        }    }    /*十进制转成八进制*/    private static MyStack conversion(int num, int n) {        //这里应该做一个正负处理的,应该把符号存储        MyStack stack = new MyStack();        while (num != 0) {            stack.push(num % n);//将余数压入栈            num = num / n;        }        return stack;    }}

测试结果:
这里写图片描述

原创粉丝点击