@ sourceNum:10进制的源数字
@ baseNum: 目的进制
package com.wjy.algorithm;
import java.util.Stack;
public class SystemTransform {
private int sourceNum;
private int baseNum;
public SystemTransform(int sourceNum,int baseNum){
this.sourceNum=sourceNum;
this.baseNum=baseNum;
}
public void transform(){
if(sourceNum<0 || baseNum<0)
{
throw new IllegalArgumentException("the parameter is valid.");
}
Stack<Integer> stack=new Stack<Integer>();
while(sourceNum!=0){
stack.push(Integer.valueOf((Integer)(sourceNum%baseNum)));
sourceNum/=baseNum;
}
// System.err.println(stack.size());
if(stack.empty()){
System.out.println("result is 0.");
}else{
int len=stack.size();
for(int i=0;i<len;i++){ //以前这里是这样写的for(int i=0;i<stack.size();i++)想想为什么不对???血的教训
System.out.print(stack.pop());
// System.err.println("i is:"+i);
// System.err.println("size is:"+stack.size());
}
System.out.println("\n");
}
}
}
调用代码是:
package com.wjy.algorithm;
public class MainTest {
public static void main(String args[]){
SystemTransform systemTransform=new SystemTransform(1348, 8);
systemTransform.transform();
}
}