|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
- }
复制代码 |
|