16<<2 java_自己写的Java N进制互相转换(2<=N<=16)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

第一次发帖 欢迎大家指点缺点

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值