fresh_python 发表于 2020-9-14 14:47:10

初学java,贴上一段简简简化版得进制转换系统。(大佬轻点喷{:5_100:} )

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;
    }
}
页: [1]
查看完整版本: 初学java,贴上一段简简简化版得进制转换系统。(大佬轻点喷{:5_100:} )