该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第一次发帖 欢迎大家指点缺点
import java.util.Scanner;
import java.util.Stack; /**
* N进制转换(2<=N<=16)
* 思路是先把原始进制数转换为10进制
* 再把10进制数转换为目标进制数
* @author Administrator
*
*/
public class JinZhiZhuanHuan { private final static int A=10;
private final static int B=11;
private final static int C=12;
private final static int D=13;
private final static int E=14;
private final static int F=15;
/**
* @param x
* @param n
* @return x^n
*/
public static int pow(int x,int n){
if(n==0){return 1;}
while(n!=1){
x*=x;
n--;
}
return x;
}
/**
* @param n
* @param m
* @param nNum
*/
public static void zhuanHuan(int n,int m,String nNum){
int temp=0;
int length=nNum.length();
Stack stack=new Stack();
for(int i=0;i
temp=temp+(pow(n,length-i-1))*parseInt(nNum.substring(i, i+1));
}
while(temp!=0){
stack.push(temp%m);
temp=temp/m;
}
while(stack.size()!=0){
System.out.print(stack.pop());
}
}
/**
* 返回单个字符串的整数值
* @param str
* @return
*/
public static int parseInt(String str){
switch(str.charAt(0)){
case 'A':
return A;
case 'B':
return B;
case 'C':
return C;
case 'D':
return D;
case 'E':
return E;
case 'F':
return F;
default:
return Integer.parseInt(str);
}
}
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
System.out.println("输入原始进制(2~16)");
int n=reader.nextInt();
System.out.println("输入目标进制(2~16)");
int m=reader.nextInt();
System.out.println("输入原始进制数");
String nNum;
boolean flag=false;
do{
flag=false;
nNum=reader.next();
for(int i=0;i
if(parseInt(nNum.substring(i,i+1))>=n){
System.out.println("输入不合法,请重新输入");
flag=true;
}
}
}while(flag);
zhuanHuan(n,m,nNum);
}
}