Simple base conversion implementation use java

来源:互联网 发布:做淘宝主图用什么软件 编辑:程序博客网 时间:2024/05/17 16:54
The stack interface defination:
package test.baseconversion;public interface IStack<T> {    public abstract void push(T value);    public abstract T pop();    public abstract T top();    public abstract boolean isEmpty();    public abstract boolean isFull();}


A sequence stack implementaion:

package test.baseconversion;public class SeqStack<T> implements IStack<T> {    private int maxSize;    private T[] stackArray;    private int top;        @SuppressWarnings("unchecked")    public SeqStack(int size){        maxSize = size;        stackArray = (T[])new Object[maxSize];        top = -1;    }        /* (non-Javadoc)     * @see test.baseconversion.IStack#push(T)     */    @Override    public void push(T value){        assert(!isFull());        stackArray[++top] = value;    }        /* (non-Javadoc)     * @see test.baseconversion.IStack#pop()     */    @Override    public T pop(){        assert(!isEmpty());        return stackArray[top--];     }        /* (non-Javadoc)     * @see test.baseconversion.IStack#top()     */    @Override    public T top(){        return stackArray[top];    }        /* (non-Javadoc)     * @see test.baseconversion.IStack#isEmpty()     */    @Override    public boolean isEmpty(){        return (top == -1);    }        /* (non-Javadoc)     * @see test.baseconversion.IStack#isFull()     */    @Override    public boolean isFull(){        return (top == maxSize - 1);    }}


The conversion implementation:
package test.baseconversion;public class BaseConversion {        public String recursiveConversion(int number, int base){        String result = "";        if(number < base){            result = new String("" + number);        }        else{            result = recursiveConversion(number/base, base) + new String("" + number % base);         }                return result;    }        public String conversion(int number, int base){        String result = "";        SeqStack<Integer> s = new SeqStack<Integer>(20);                while(number > 0){            s.push(number % base);            number = number / base;        }                while(!s.isEmpty()){            result += s.pop();        }                return result;    }    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        String result;        BaseConversion baseconversion = new BaseConversion();        result = baseconversion.recursiveConversion(10, 2);        System.out.println("recursive result is : " + result);                result = baseconversion.conversion(10, 2);        System.out.println("non recursive result is : " + result);    }}