package com.kidd;
import java.util.Scanner;
public class Main {
private static int maxlength = 16;
/**
* 进制转换 把正整数n转换成m进制最后输出字符串格式
*
* @param args
*/
public static void main(String[] args) {
int n, m;
Scanner sc = new Scanner(System.in);
n = getNum1(sc);
m = getNum2(sc);
String s = "";
s = convert(n, m, s);
System.out.printf("转换成%d进制的结果是:%s", m, s);
}
private static int getNum1(Scanner sc) {
int n = 0;
String s;
boolean end = false;
while (!end) {
System.out.print("请输入一个正整数:");
try {
s = sc.nextLine();
n = Integer.parseInt(s);
} catch (NumberFormatException e) {
System.out.println("输入不合法,请重新输入");
continue;
}
if (n < 0) {
System.out.println("输入不合法,请重新输入");
continue;
}
end = true;
}
return n;
}
private static int getNum2(Scanner sc) {
int m = 0;
String s;
boolean end = false;
while (!end) {
System.out.printf("请输入指定基数2~%d之间:", maxlength);
try {
s = sc.nextLine();
m = Integer.parseInt(s);
} catch (NumberFormatException e) {
System.out.println("输入不合法,请重新输入");
continue;
}
if (m < 2 || m > 16) {
System.out.println("输入不合法,请重新输入");
continue;
}
end = true;
}
return m;
}
/**
* 用除m取余的方法把正整数n转换成m进制,结果存放到s中
*
* @param n
* @param m
* @param s
* @return
*/
private static String convert(int n, int m, String s) {
int i = n / m;
int j = n - i * m;
if (i != 0) {
s = convert(i, m, s);
}
switch (j) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9: {
s = s + j;
break;
}
case 10: {
s = s + 'A';
break;
}
case 11: {
s = s + 'B';
break;
}
case 12: {
s = s + 'C';
break;
}
case 13: {
s = s + 'D';
break;
}
case 14: {
s = s + 'E';
break;
}
case 15: {
s = s + 'F';
break;
}
default: {
break;
}
}
return s;
}
}
温馨提示:答案为网友推荐,仅供参考