马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int function = menu();
while(function!=0){
System.out.printf("转换后的数字为:%s\n",inputCommand(function));
function = menu();
}
}
public static String inputCommand(int function){
Scanner scan = new Scanner(System.in);
int function1 = 0;
String num = " ";
if(function==1){
System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
function1 = scan.nextInt();
System.out.println("请输入你要转换的数:");
num = scan.next();
return switch1(function1,num);
}else if(function==2){
System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
function1 = scan.nextInt();
System.out.println("请输入你要转换的数:");
num = scan.next();
return switch2(function1,num);
}else if(function==3){
System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
function1 = scan.nextInt();
System.out.println("请输入你要转换的数:");
num = scan.next();
return switch1(function1,switch2(2,num));
}else if(function==4){
System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
function1 = scan.nextInt();
System.out.println("请输入你要转换的数:");
num = scan.next();
return switch1(2,switch2(function1,num));
}
return "";
}
public static int menu(){
Scanner scan = new Scanner(System.in);
System.out.println("请选择功能(输入功能前面的序号即可选择):");
System.out.println("1.十进制向其它进制的转换.");
System.out.println("2.其它进制向十进制的转换.");
System.out.println("3.二进制向十六进制和八进制的转换.");
System.out.println("4.十六进制和八进制向二进制的转换的转换.");
System.out.println("0.退出。");
int function = scan.nextInt();
return function;
}
/**
* 将十进制转换成其它进制(正整数版本)
* @param function 待转换的进制
* @param num 待转换的数
* @return 返回转换后的数
*/
public static String switch1(int function,String num){
int num1 = 0;//存放转换之前的数字
String num2 = " ";//保存转换后的字符
//将字符转换成数字
for (int i = 0; i < num.length(); i++) {
char c = num.charAt(num.length()-1-i);
num1 += (c-'0')*Math.pow(10,i);
}
while(true){
int flag = num1%function;
if(flag<=9){
num2 += flag;
}else{
if(flag==10)
{
num2 += "A";
}else if(flag==11){
num2 += "B";
}else if(flag==12){
num2 += "C";
}else if(flag==13){
num2 += "D";
}else if(flag==14){
num2 += "E";
}else if(flag == 15){
num2 += "F";
}
}
num1 = num1/function;
if(num1==0){
break;
}
}
return new StringBuilder(num2).reverse().toString();
}
/**
* 将其它进制的数转换成十进制的数
* @param function 表示当前数的进制
* @param num 待转换的数
* @return 返回转换后的数
*/
public static String switch2(int function,String num){
int num1 = 0;//存放转换之前的数字
String num2 = " ";//保存转换后的字符
//将字符转换成数字
for (int i = 0; i < num.length(); i++) {
char c = num.charAt(num.length()-1-i);
if(c=='A')
{
num1 += 10*Math.pow(function,i);
}else if(c=='B'){
num1 += 11*Math.pow(function,i);
}else if(c=='C'){
num1 += 12*Math.pow(function,i);
}else if(c=='D'){
num1 += 13*Math.pow(function,i);
}else if(c=='E'){
num1 += 14*Math.pow(function,i);
}else if(c == 'F'){
num1 += 15*Math.pow(function,i);
}else{
num1 += (c-'0')*Math.pow(function,i);
}
}
num2 = Integer.toString(num1);
return num2;
}
}
|