1. 方法一(调用系统方法)
package demo;
import java.util.Scanner;
/**
* 任意进制转换为 十 进制
* @author 时光·漫步
*
*/
public class Test{
public static void main( String args[]) {
System.out.print("请输入待转换数的进制:");
Scanner scanner = new Scanner( System.in);
int jinzhi = scanner.nextInt();
System.out.print("请输入待转换的数字:");
String str = scanner.next();
int num = Integer.valueOf(str,jinzhi);
System.out.println(num);
}
}
2. 方法二(自定义方法)
package com.zth;
import java.util.Scanner;
/**
* 任意进制转换为 十 进制
* @author 时光·漫步
*
*/
public class JinZhi{
public static void main( String args[]) {
Scanner scanner = new Scanner( System.in);
System.out.print("请输入待转换数的进制:");
int jinzhi = scanner.nextInt();
System.out.print("请输入待转换的数:");
String str = scanner.next();
scanner.close();
int d; // 保存取出的最低位
int p = 0; // 保存当前位权,从个位开始
int sub = 0; // 保存当前数值
char c;
int length = str.length();
for(int i= 0; i<length;i++) {
c = str.charAt(i);
// 将字符转换为对应的数字
if(c>='A' && c<= 'Z') {
d = c - 55;
}else if(c>='a' && c<= 'z') {
d = c - 87;
}else {
d = c - 48;
}
// 当前位权
p = length - 1-i;
// 0^0 = 1
if(d != 0) {
sub += d*(int)Math.pow(jinzhi,p);
}
// System.out.println("当前位权:"+p+"当前数值:"+d);
}
System.out.println(jinzhi + " 进制的 "+ str +" 为:"+sub);
}
}